簡體   English   中英

運行時Android中出現錯誤:無法將字符串轉換為JSONObject

[英]Error in Android while running : String cannot be converted to JSONObject

值{“ orders”:[{“ orders_id”:14,“ order_price”:“ 220.50”,“ shipping_cost”:“ 10.00”,“ total_tax”:“ 220.50”,“ date_purchased”:“” 2019-01-28 12: 16時51" 分, “products_id”:8},{ “orders_id”:14, “order_price”: “220.50”, “shipping_cost”: “10.00”, “total_tax”: “220.50”, “date_purchased”:“2019-類型為java.lang.String的01-28 12:16:51“,” products_id“:1}]}}無法轉換為JSONObject

我嘗試了一些在Stackoverflow上提供的解決方案,例如: java.lang.String類型的Android Value ...無法轉換為JSONArray,但無效。 請幫我。


的PHP:

public function ResellerOrders($reseller_id) 
{  

   $arr=array();
   $result=array();


    $stmt = $this->conn->prepare("SELECT o.orders_id,o.order_price,o.shipping_cost,o.total_tax,o.date_purchased,p.products_id FROM orders o, orders_products p WHERE o.orders_id = p.orders_id AND  o.reseller_id = ?");
   $stmt->bind_param("i", $reseller_id);


     if ($stmt->execute()) 
       {

      $stmt-> bind_result($token2,$token3,$token4,$token5,$token6,$token7);

          for ($i=0; $stmt-> fetch();$i++ ) 
            {

               $arr["orders"][$i]["orders_id"] = $token2;
            $arr["orders"][$i]["order_price"] = $token3;
            $arr["orders"][$i]["shipping_cost"] = $token4;
            $arr["orders"][$i]["total_tax"]= $token5;
            $arr["orders"][$i]["date_purchased"]= $token6;
            $arr["orders"][$i]["products_id"]= $token7;
            } 

              if(!$arr) exit('No rows');

               $stmt->close();

              return json_encode(($arr));

       }
    else
      {
        echo "no result";
      }            

        return json_encode($arr);
}

Android Java代碼

JsonArrayRequest strReq = new JsonArrayRequest(Request.Method.POST,
                URL_FOR_orders, new Response.Listener<JSONArray>() {

            @Override
            public void onResponse(JSONArray response) {
                Log.d(TAG, "Reseller Dashboard Response: " + response.toString());

                try {

                      for(int i=0;i<response.length();i++) {

                        JSONObject jObj=response.getJSONObject(i);

                        boolean error = jObj.getBoolean("error");

                        if (!error) {

                            Order_list orders = new Order_list(jObj);
                            Toast.makeText(getApplicationContext(), orders.product_id + " " + orders.billing_date, Toast.LENGTH_SHORT).show();


                            Intent intent = new Intent(
                                    Dashboard.this,
                                    categories.class);

                            intent.putExtra("reseller_id", reseller_code);                                      startActivity(intent);
                            finish();

                        } else {

                            String errorMsg = jObj.getString("error_msg");
                            Toast.makeText(getApplicationContext(),
                                    errorMsg, Toast.LENGTH_LONG).show();
                        }
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }

            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Log.e(TAG, "Error in getting data: " + error.getMessage());
                Toast.makeText(getApplicationContext(),
                        error.getMessage(), Toast.LENGTH_LONG).show();

            }
        }) {
            @Override
            protected Map<String,String> getParams() {
                // Posting params to login url
                Map<String, String> params = new HashMap<String, String>();
                params.put("reseller_id", String.valueOf(code));
                return params;
            }
        };

我想將數據檢索到android中,但不允許我這樣做,所以問題出在哪里? 是在php中傳遞值還是將數據檢索到android中?

我想檢索結果:

訂單:1.orders_id:14,order_price:220.50,shipping_cost:10.00,total_tax:220.50,date_purchaded:2019-01-28 12:16:51,products_id:8 2.orders_id:14,order_price:220.50,shipping_cost:10.00,總稅金:220.50,購買日期:2019-01-28 12:16:51,產品編號:1

@Override
    public void onResponse(JSONArray response) {
        Log.d(TAG, "Reseller Dashboard Response: " + response.toString());

        try {
              for(int i=0;i<response.length();i++) {
                JSONObject jObj=response.getJSONObject(i);
                String ordersId = jObj.getString("orders_id");
                String orderPrice = jObj.getString("order_price");
                String shippingCost = jObj.getString("shipping_cost");
                String totalTax =jObj.getString("total_tax");
                String datePurchased = jObj.getString("date_purchased");
                String productsId = jObj.getString("products_id);            
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }

    }
}, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {
        Log.e(TAG, "Error in getting data: " + error.getMessage());
        Toast.makeText(getApplicationContext(),
                error.getMessage(), Toast.LENGTH_LONG).show();

    }
}) {
    @Override
    protected Map<String,String> getParams() {
        // Posting params to login url
        Map<String, String> params = new HashMap<String, String>();
        params.put("reseller_id", String.valueOf(code));
        return params;
    }
};

Android 錯誤:值

[英]Android Error: Value <br of type java.lang.String cannot be converted to JSONObject

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM