Generi c POJO до JSON с использованием Джексона с ключом Dynami c json согласно классу Generi c - PullRequest
0 голосов
/ 16 марта 2020

У меня есть POJO вроде:

 class Wrapper,T> {
     private int count;
     private T data;
     // getters setters
}

При преобразовании его в JSON с использованием Джексона, json выглядит примерно так:

{
count:1,
**data**:{}
}

Мне нужен ключ данных для изменить в соответствии с именем класса T или каким-либо другим значением, связанным с именем класса, как я могу добиться этого. Пожалуйста, предложите. Thankyou.

1 Ответ

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

Используя пользовательский сериализатор, вы можете делать все что угодно, так как у вас есть полный контроль над процессом сериализации. Например, https://www.baeldung.com/jackson-custom-serialization.

Ваш метод serialize будет выглядеть примерно так:

@Override
public void serialize(
  Wrapper<?> value, JsonGenerator jgen, SerializerProvider provider) 
  throws IOException, JsonProcessingException {

    String derivedName = value.getClass().getSimpleName() + "Data"; // just an example

    jgen.writeStartObject();
    jgen.writeNumberField("count", value.getCount());
    jgen.writeObjectField(derivedName, value.getData());
    jgen.writeEndObject();
}
...