Как я могу сопоставить в JAVA с JACKSON массив из JSON, который может содержать объекты различных типов в качестве элементов? - PullRequest
0 голосов
/ 22 апреля 2020

Как видно из приведенного ниже примера, первый элемент в массиве attributes - это объект, состоящий из двух строковых свойств. Второй объект состоит из свойства строки и массива. Я хотел бы декодировать оба этих типа Json объектов в коллекцию Java объектов.

Как я могу express это в POJO java классе, чтобы обрабатывать декодирование Json как это?

attributes:[
  {
    "attribute_code": "has_options",
    "value": "0"
  },
  {
    "attribute_code": "ewc_top_quick",
    "value": [
      {
        "label": "Display",
        "value": "12.5",
        "suffix": "''"
      },
      {
        "label": "Grafica Integrata",
        "value": "1",
        "suffix": ""
      }
    ]
  }
]

1 Ответ

1 голос
/ 22 апреля 2020

Итак, вы можете использовать Map<String, Object> для этого поля.

class Attr {

    private String attribute_code;

    private Map<String, Object> value;
}

После этого вы можете работать с этим объектом.

Также вы можете использовать @JsonAnySetter. Это что-то похожее на предыдущий вариант.

И лучший способ разрешить вашу ситуацию - это пользовательский десериализатор . Я настоятельно рекомендовал этот вариант.

...