gpt4 book ai didi

java - 是否可以将变量用作@JsonRootName?

转载 作者:行者123 更新时间:2023-11-30 10:42:02 24 4
gpt4 key购买 nike

我有一个类似的 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com