我在JSON下面有这个
[
{
"itemid": "59",
"toppings": [
{
"name": "Quantity 1",
"value": [
"Honey with Chocolate Sauce 10 ML"
]
}
]
}
]
我正在使用java中的org.json以这种方式解析它
JSONArray json = new JSONArray(orderjson);
JSONObject orderdetailsjson = new JSONObject();
for(int i=0;i<json.length();i++)
{
JSONObject jsonobjectpar = json.getJSONObject(i);
orderdetailsjson.put("orderid", jsonobjectpar.getString("orderid"));
orderdetailsjson.put("itemid", jsonobjectpar.getString("itemid"));
orderdetailsjson.put("toppings", jsonobjectpar.getString("toppings"));
}
System.out.println(orderdetailsjson);
当我运行上述内容时,输出为
{
"itemid": "59",
"toppings": "[{\"name\":\"Quantity 1\",\"value\":[\"Honey with Chocolate Sauce 10 ML\"]}]"
}
toppings数组有额外的反斜杠。
请让我知道如何消除它们?
为什么会自动附加额外的反斜杠?
如何消除它们?
我尝试使用
String toppings = jsonobjectpar.getString("toppings");
toppings = toppings.replace("\\/", "/");
orderdetailsjson.put("toppings", toppings);
但没有工作。
答案 0 :(得分:1)
您已将JSON对象转换为String并将String用作属性值。 String包含双引号字符,需要在最终序列化中进行转义。 (这是因为引号字符具有特殊含义......作为字符串终止符。)
但是如果您在问题开头尝试生成JSON,那么您正在错误地构建JSONObject
。您不应该将"puttings"
的值设置为String。它应该是一个JSON对象。改变
orderdetailsjson.put("toppings", jsonobjectpar.getString("toppings"));
到
orderdetailsjson.put("toppings", jsonobjectpar.getJSONObject("toppings"));
或(在这种情况下是正确的),
orderdetailsjson.put("toppings", jsonobjectpar.getJSONArray("toppings"));
...因为浇头实际上是一个数组。