Почему дополнительные обратные косые черты добавляются автоматически?

1

У меня это ниже 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);

но не работает.

  • 2
    Потому что вы положили это как String . Вы не ставили это в тупик .
  • 1
    Обратная косая черта является escape-символом, поскольку обычная кавычка (") будет анализироваться как символ специального значения (обозначает строку). Это означает, что то, что приходит, должно быть буквально символом", а не тем, что "обычно делает.
Показать ещё 2 комментария
Теги:

1 ответ

1
Лучший ответ

Вы превратили объект 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"));

... поскольку начинка на самом деле является массивом.

  • 0
    Спасибо, но как это будет работать, это поместит весь JSON в начинки знать ??
  • 0
    О да. Понимаю. Обновлено ...
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню