Как создать класс Java, содержащий карту известных и неизвестных пар ключ-значение?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как создать класс Java, содержащий карту известных и неизвестных пар ключ-значение?

Сообщение Anonymous »


Я пытаюсь создать класс Java для хранения результатов десериализации сообщения в формате JSON. Сообщение имеет простую структуру:

{ "appId": "MyApp", "действие": "Обновить", "entityType": "Свойство", "сущность": { "marketId": "abc123", "propertyId": "def456", "name": "Центральный вокзал", "hasFoo": правда, «hasBar»: ложь, "areaInSf": 30 000 ... еще пары ключ-значение... } } В entity поля идентификатора и имени являются обязательными, и их имена известны. Может быть произвольное количество других свойств, которые я также хочу десериализовать — они не являются обязательными, и я не знаю всех имен заранее.

Если я имею дело только с известными полями, я могу создать модель Java, например

Сообщение публичного класса { общедоступная строка appId; публичное действие String; общедоступная строка типа объекта; публичная организация; } общественный класс Entity { публичная строка marketId; публичная строка propertyId; публичное имя строки; } и десериализуйте JSON с помощью Джексона, например:

ObjectMapper om = новый ObjectMapper(); Сообщение myMessage = om.readValue(myJsonString, Message.class); Но как мне быть с необязательными полями в сообщении? Это плоские однотипные поля идентификатора и имени, а не вложенная карта, поэтому я не могу этого сделать.

публичный класс Entity { публичная строка marketId; публичная строка propertyId; публичное имя строки; общественная картаotherFields; // hasFoo, hasBar, areaInSf ... } Я предпочитаю строго типизированный Entity, чтобы можно было проверять аспекты обязательных полей — минимальную длину идентификатора и т. д. В противном случае Entity может быть просто code>Карта. Чтобы получить доступ к полям, я просто перебираю свойства карты. Но я хочу иметь возможность извлекать необходимые поля по имени и, если возможно, перебирать только оставшиеся поля.

Как спроектировать Entity POJO, чтобы можно было десериализовать как поля, объявленные в определении класса, так и некоторые дополнительные поля, найденные во входном JSON?
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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