#java #json #resteasy #quarkus #jsonb-api
#java #json #resteasy #quarkus #jsonb-api
Вопрос:
Я пытаюсь десериализовать следующий JSON (см. Документацию API), используя реализацию JSON-B от Quarkus.
Что меня беспокоит, так это динамически генерируемые цифровые ключи для нескольких объектов JSON. Я хочу десериализовать все неизвестные свойства в a Map<Long, MyObject>
. Простое объявление карты внутри объекта данных не сработает.
Джексон, похоже, поддерживает именно желаемое поведение с помощью @JsonAnySetter
аннотации (см. Документацию).
Что я мог бы сделать, так это написать свой собственный JsonbAdapter
для разбора неизвестных свойств вручную, но это кажется загадочным объемом работы для такой простой задачи.
Как я могу десериализовать неизвестные свойства JSON на карту с помощью JSON-B?
{
"634": {
"AT": {
"av": -61.082,
"ct": 314284,
"mn": -94.58,
"mx": -16.136
},
"First_UTC": "2020-09-07T15:29:16Z",
"HWS": {
"av": 6.685,
"ct": 156912,
"mn": 0.452,
"mx": 17.887
},
"Last_UTC": "2020-09-08T16:08:49Z",
"PRE": {
"av": 775.846,
"ct": 159956,
"mn": 746.3902,
"mx": 793.7311
},
"Season": "summer",
},
"635": { ... },
"636": { ... },
"638": { ... },
"sol_keys": [
"634",
"635",
"636",
"638",
],
}
Ответ №1:
Это не даст прямого ответа на ваш вопрос, но JSON-B не обладает всеми функциями, которые есть у Джексона.
Так что, если вы пропустите какую-то функцию, вы можете просто использовать Jackson: это первоклассный гражданин и в мире Quarkus. У нас есть аналоги Джексона для каждого расширения JSON-B.