Как разобрать строку JSON в Java, чтобы получить строку AnotherJSON, содержащуюся внутри

Я получаю String jsonObject в моем контроллере. Структура следующая:

{
  "name":"name", 
  "schema": {
   ... 
   ...
   }
}

Мне нужно разобрать его на обычный старый объект Java и получить schema в виде строки (с сохранением структуры). Когда я использую System.out.print("schema"), я ожидаю увидеть:

{
  ...
  ... 
}

У меня есть POJO Collection с полями String name и Object schema. Я использую GSON для получения Collection.class от String json:

new Gson().fromJson(json, Collection.class);

Когда я пытаюсь распечатать Collection.schema, я получаю следующий вывод:

{......} - в один ряд.

Мне очень нужно получить этот объект как Stringбез форматирования

Итак, вы просите, чтобы значение «схемы» не декодировалось, а каким-то образом сохранялось как исходная строка символов, которая представляла его в исходном JSON? Я думаю, вы бы хотели, чтобы значение ключа «схема» было этой строкой. Странно хотеть. Если вы перекодируете такую ​​структуру, вы получите строку JSON, отличную от исходной.

CryptoFool 10.02.2019 04:12

да. Как я могу получить строку символов, которая представляла ее в исходном JSON?

Donatello 10.02.2019 04:14
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
68
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это должно работать. По сути, вы гидратируете свой объект Collection, а затем просто отправляете свою схему обратно через Gson. Сделанный.

Gson gson = new Gson();
Collection collection = gson.fromJson(json, Collection.class);
String schema = gson.toJson(collection.getSchema());
System.out.println(schema);

Можно задать вопрос, почему вы принимаете строку от своего контроллера? Возможно, вы сможете использовать фреймворк для передачи полностью преобразованного объекта Collection и сэкономите себе время?

Кроме того, для вашей Collection.schema обычно используется Map<String, Object> вместо Object для этого типа парадигмы без «схемы».

Я только начинаю писать службы REST с использованием Spring Boot. Буду рад, если подскажете, как лучше сделать

Donatello 10.02.2019 04:27

Ах да, тогда Spring REST сделает это. Поэтому в аргументах метода вашего контроллера просто используйте yourMethod(@RequestBody Collection collection). Затем оттуда вы можете использовать GSON для преобразования схемы в строку json.

Hermann Steidel 10.02.2019 04:32

Без проблем. Добро пожаловать в Spring Web REST. Надеюсь, вы весело проведете время в своем путешествии.

Hermann Steidel 10.02.2019 05:15

Другие вопросы по теме