У меня это ниже JSON
[
{
"itemid": "59",
"toppings": [
{
"name": "Quantity 1",
"value": [
"Honey with Chocolate Sauce 10 ML"
]
}
]
}
]
И я разбираю его таким образом, используя org.json в java
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 в String и использовали String в качестве значения атрибута. Строка содержит символы двойной кавычки, которые необходимо выполнить в финальной сериализации. (Это потому, что символ цитаты имеет особое значение... как ограничитель строки).
Но если вы пытаетесь создать JSON в начале Вопроса, вы неправильно JSONObject
. Вы не должны устанавливать значение "puttings"
к "puttings"
. Это должен быть объект JSON. + Изменить
orderdetailsjson.put("toppings", jsonobjectpar.getString("toppings"));
в
orderdetailsjson.put("toppings", jsonobjectpar.getJSONObject("toppings"));
или (чтобы быть правильным в этом случае),
orderdetailsjson.put("toppings", jsonobjectpar.getJSONArray("toppings"));
... поскольку начинка на самом деле является массивом.
String
. Вы не ставили это в тупик .