我想使用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)
{}}
有人可以告诉我如何纠正这个错误吗?
答案 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
,这消除了歧义。