我有一个类似的 spring 项目和类,想生成以根名称为类型的 json。这是一个例子:
public class Person {
private String type; //worker
private String name; //Dennis
private String surname; //Ritchie
}
结果应该是:
{"worker" : {
"name" : "Dennis" ,
"surname" : "Ritchie"
}
}
我可以使用像@JsonRootName 这样的 Json 标签来实现吗?还是我应该为 worker 编写一个类并扩展 Person 类(有 3 种不同的类型)?
最佳答案
当您需要将对象序列化为具有不同形式的 JSON 时,您可以实现自定义序列化程序:
public class PersonSerializer extends JsonSerializer<Person> {
@Override
public void serialize(Person person, JsonGenerator jgen, SerializerProvider provider)
throws IOException, JsonProcessingException {
jgen.writeStartObject();
jgen.writeFieldName(person.getType());
jgen.writeStartObject();
jgen.writeFieldName("name", person.getName());
jgen.writeFieldName("surname", person.getSurname());
jgen.writeEndObject();
jgen.writeEndObject();
}
}
之后,就可以在类上注册序列化器了:
@JsonSerialize(using = PersonSerializer.class)
public class Person {
private String type;
private String name;
private String surname;
}
关于java - 是否可以将变量用作@JsonRootName?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38293068/