Сериализация плоского объекта до вложенной JSON структуры - PullRequest
1 голос
/ 20 марта 2020

Challenge

У меня есть полностью плоский (POGO / POJO) объект, который мне нужно сериализовать во вложенную JSON структуру. Желательно использовать аннотации Джексона и / или пользовательский сериализатор

. Меня интересует только сериализация от объекта до JSON, десериализация не нужна.

Пример

Я бы хотел бы включить этот класс:

class SomeClass {
    @JsonProperty('Business.Name')
    BigDecimal prop1 = 42.0
    @JsonProperty('Other.Nested.Business.Name')
    BigDecimal prop2 = 3.14
}

В этот JSON:

{
  "Other" : {
    "Nested.Business.Name" : 3.14
  },
  "Business.Name" : 42.0
}

Catch 22 * ​​1015 * Код для класса генерируется автоматически. У меня есть некоторое влияние на поколение, но оно должно быть абсолютно ровным! Любая помощь будет высоко ценится! Дополнительная информация

I уже пытался создать собственный сериализатор, но не смог написать вложенную структуру.

class SomeClassSerializer extends StdSerializer<SomeClass> {
    void serialize(SomeClass value, JsonGenerator jgen, SerializerProvider provider) {
        jgen.writeStartObject()
        jgen.writeNumberField("Business.Name", value.prop1)
        //how to write the nested structure
        jgen.writeEndObject()
    }
    ....
}

Ответы [ 2 ]

1 голос
/ 20 марта 2020

Где написано // как написать вложенную структуру, вы пробовали что-то вроде

   jgen.writeObjectFieldStart("Other")
   jgen.writeNumberField("Nested.BusinessName", value.prop2)
   jgen.writeEndObject()
0 голосов
/ 20 марта 2020

Вы можете написать только собственный сериализатор: JsonSerializer<SomeClass>, чтобы определить все правила.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...