android:json对象给出错误

时间:2017-10-01 12:50:00

标签: android json rest retrofit2

我想使用JSONObject向服务器发送retrofit 2,我发送这种json对象:

{"Order Summary":
"[ 
   {
     \ "ProductName\":\"Wine\",
      \"ProductPrice\":\"500\",
      \"ProductQuantity\":\"2\",
      \"ProductCost\":\"1000\",
      \"SellerId\":\"2\"

   },
   {
      \"ProductName\":\"Whiskey\",
      \"ProductPrice\":\"1000\",
      \"ProductQuantity\":\"1\",
      \"ProductCost\":\"1000\",
      \"SellerId\":\"1\"

   }
]"}

因为我无法解析json对象

这是我使用的源代码: -

private void loadCart()
    {


        Cursor cursor = dbHelper.getCarProducts();
        cursor.moveToFirst();
        do {

            JSONObject product = new JSONObject();
            try {
                product.put("Sellerid",cursor.getString(cursor.getColumnIndex("_Sellerid")));
                product.put("ProductCost",cursor.getString(cursor.getColumnIndex("_Cost")));
                product.put("ProductQuantity",cursor.getString(cursor.getColumnIndex("_Quantity")));
                product.put("ProductPrice",cursor.getString(cursor.getColumnIndex("_Price")));
                product.put("ProductName",cursor.getString(cursor.getColumnIndex("_Name")));
                userCart.put(product);
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }while(cursor.moveToNext());
             Cart = new JSONObject();
          try
          {
              Cart.put("OrderSummary",userCart.toString());
          }
          catch (Exception ex)
          {}}

有人可以告诉我如何纠正这个错误吗?

1 个答案:

答案 0 :(得分:2)

这是你的错误

 Cart.put("OrderSummary", userCart.toString());

你得到纯JSON数组,但为什么要将它转换为String?

使用,

 Cart.put("OrderSummary", userCart);  // remove .toString()

修改

通过检查服务器端代码,我认为问题出在index.php文件中(我不是PHP专家)

$requestedData = $response->getBody();

而不是$response您应该使用$request对象。为了解决这个问题,请参考此StackOverflow thread或参考Slim Framework的official doc

从Slim Framework发送JSON响应以引用此StackOverflow thread

注意:声明Java变量/对象时,请尝试遵守Java varibales /方法命名约定。而不是Cart使用cart,这消除了歧义。