Джексон анализирует json на Map с вложенными полями. Правильный анализ вложенного поля на MapJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Джексон анализирует json на Map с вложенными полями. Правильный анализ вложенного поля на Map

Сообщение Anonymous »

У меня есть такой json:

Код: Выделить всё

{
"id": "uuid-1111"
"country": "US",
"car_brand": "Ford",
"info": {
"color": "red",
"weight": 70
}
}
У меня есть класс данных:

Код: Выделить всё

public class Data implements Serializable {

private Map jsonData;

public Map getJsonData() {
return jsonData;
}

public void setJsonData(Map jsonData) {
this.jsonData = jsonData;
}
}
Я анализирую строку json в Map с помощью Джексона, используя:

Код: Выделить всё

HashMap props = new ObjectMapper().readValue(jsonString, new TypeReference() {
});
// assign it to the jsonData attribute:
Data data = new Data();
data.setJsonData(props);
после этого я хотел получить доступ к полю «информация» json (карты), а также проанализировать его в Map следующим образом:

Код: Выделить всё

String infoJson = data().getJsonData().get("info").toString();
HashMap props2 = new ObjectMapper().readValue(infoJson, new TypeReference() {});
но это вызывает JsonProcessingException с сообщением: Неожиданный символ ('c' (код 99)): ожидалось, что имя поля будет начинаться с двойной кавычки
И это правильно, потому что когда я регистрирую infoJson, это выглядит так (обратите внимание, что в нем нет двойных кавычек, поверьте, это произошло потому, что оно уже было сопоставлено ранее) {color=red, Weight=70}
Поэтому я попробовал напрямую выполнить приведение к карте, и это сработало:

Код: Выделить всё

HashMap props = (HashMap) data.getJsonData().get("info");
но, возможно, есть другой, более безопасный способ с Джексоном вместо прямого приведения, если нет, как я могу убедиться, что могу его применить, прежде чем пытаться, чтобы избежать исключений? Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/784 ... sing-of-ne
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Назначьте ввод Map> выходу Map>
    Anonymous » » в форуме JAVA
    0 Ответы
    124 Просмотры
    Последнее сообщение Anonymous
  • Java – Джексон – Как десериализовать случайный XML как строковое значение Map<String,String>, а затем сериализовать его
    Anonymous » » в форуме JAVA
    0 Ответы
    28 Просмотры
    Последнее сообщение Anonymous
  • Как сопоставить Map> из application.yml в micronaut
    Anonymous » » в форуме JAVA
    0 Ответы
    64 Просмотры
    Последнее сообщение Anonymous
  • Java Convert Map> в Map> [закрыто]
    Anonymous » » в форуме JAVA
    0 Ответы
    74 Просмотры
    Последнее сообщение Anonymous
  • Map to Map в Spark
    Anonymous » » в форуме JAVA
    0 Ответы
    28 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»