как печатать вложенный json -объект без экранирования и кавычек - PullRequest
1 голос
/ 16 марта 2020

У меня есть json -объект с именем jsonObject

{
    "action":"Read",
    "infos":[
        {
            "value":0.0350661,
            "key":"first"
        }
    ]
}

Я хочу напечатать json -объект со следующей формой

{"action":"Read","infos":[{"value":0.0350661,"key":"first"}]}

, если я используйте метод jsonObject.toString(), я получу

{"action":"Read","infos":"[{\"value\":0.0350661,\"key\":\"first\"}]"}

, если я использую метод StringEscapeUtils.unescapeJava(jsonObject.toString()), я получу

{"action":"Read","infos":"[{"value":0.0350661,"key":"first"}]"}

, если я использую картограф Джексона со следующим кодом

ObjectMapper mapper = new ObjectMapper();
mapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
String jsonString = mapper.writeValueAsString(getDebugInfo())

я получу jsonString как

{"nameValuePairs":{"action":"Read","infos":[{"value":0.0350661,"key":"first"}]}}

Есть ли какое-либо решение для получения желаемой строки json -string?

Ответы [ 2 ]

0 голосов
/ 16 марта 2020

Здесь я попробовал приведенный ниже код с использованием библиотеки GSON, и он печатает мне правильный json, как показано выше.

public static void main ( String [] args ) {

        JsonObject jsonObject = new JsonObject();
        jsonObject.addProperty("action", "Read");
        JsonArray jsonArr = new JsonArray();
        JsonObject jsonObject2 = new JsonObject();
        jsonObject2.addProperty("value", 0.0350661);
        jsonObject2.addProperty("key", "first");
        jsonArr.add(jsonObject2);
        jsonObject.add("infos", jsonArr);


        String jsonString = jsonObject.toString();
        Gson gson = new GsonBuilder().setPrettyPrinting().create();
        JsonElement json = gson.fromJson(jsonString,JsonElement.class);
        String jsonInString = gson.toJson(json);
        System.out.println(jsonInString);
}

ВЫХОД:

{
  "action": "Read",
  "infos": [
    {
      "value": 0.0350661,
      "key": "first"
    }
  ]
}

Даже если Я формирую jsonObject, используя org.json, и просто печатаю его, используя System.out.println(jsonObject.toString()); на консоли, и получаю такой результат.

{"action":"Read","infos":[{"value":0.0350661,"key":"first"}]}

Итак, не уверен, как вы сформировали свой jsonObject.

0 голосов
/ 16 марта 2020
  • JSON Структура

Вы имеете это как объект, поэтому там нет кавычек.

В вашем примере присутствует объект массива , в структуре Json.

  • Код / Java

При печати на Консоль , каждый ключ * тела 1010 * Ссылка на значение toString ().

Вот почему присутствуют двойные кавычки, так как строки используются!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...