gpt4 book ai didi

java - 为什么会自动附加额外的反斜杠?

转载 作者:太空宇宙 更新时间:2023-11-04 06:42:12 24 4
gpt4 key购买 nike

我有下面的 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\"]}]"
}

浇头数组有额外的反斜杠。

请告诉我如何消除它们?

为什么会自动附加额外的反斜杠?

如何消除它们?

我尝试使用

String toppings  = jsonobjectpar.getString("toppings");

toppings = toppings.replace("\\/", "/");

orderdetailsjson.put("toppings", toppings);

但不工作。

最佳答案

您已将 JSON 对象转换为字符串,并使用该字符串作为属性值。该字符串包含双引号字符,需要在最终序列化中转义。 (这是因为引号字符具有特殊含义......作为字符串终止符。)

但是,如果您尝试在问题开始时生成 JSON,则您正在错误地构建 JSONObject。您不应该将 "puttings" 的值设置为字符串。它应该是一个 JSON 对象。改变

    orderdetailsjson.put("toppings", jsonobjectpar.getString("toppings"));

    orderdetailsjson.put("toppings", jsonobjectpar.getJSONObject("toppings"));

或者(在这种情况下是正确的),

    orderdetailsjson.put("toppings", jsonobjectpar.getJSONArray("toppings"));

...因为toppings实际上是一个数组。

关于java - 为什么会自动附加额外的反斜杠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24542137/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com