在同一个类中序列化JSON时,是否可以具有如下所示的内容
@JsonProperty("stats")
private StatsDetails statsDetails
@JsonProperty("stats")
private List<StatsDetails> statsDetailsList
因此,在形成json时,我可以只包含statsDetails或statsDetailsList中的一个。
我还有一个单独的JsonMapper代码,可以将这个pojo数据转换成json,我没有在这里介绍它。
发布于 2020-04-30 20:15:59
你不能这么做。它会抛出JsonMappingException
jackson无法知道你指的是哪一个字段。您可以使用以下代码自己尝试:
POJOClass:
import com.fasterxml.jackson.annotation.JsonGetter;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonSetter;
import java.util.List;
public class POJOClass {
public POJOClass(String object) {
this.object = object;
}
public POJOClass(List<String> objectList) {
this.objectList = objectList;
}
@JsonProperty("object")
public String object;
@JsonProperty("object")
public List<String> objectList;
@JsonGetter("object")
public String getObject() {
return object;
}
@JsonGetter("object")
public List<String> getObjectList() {
return objectList;
}
@JsonSetter("object")
public void setObject(String object) {
this.object = object;
}
@JsonSetter("object")
public void setObjectList(List<String> objectList) {
this.objectList = objectList;
}
}
主类:
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
public class MainClass {
public static void main(String[] args) {
String text = "f";
List<String> list = Arrays.asList("a", "b", "c");
ObjectMapper mapper = new ObjectMapper();
try {
String json = mapper.writeValueAsString(new POJOClass(text));
String listJson = mapper.writeValueAsString(new POJOClass(list));
System.out.println("json=" + json);
System.out.println("listJson=" + listJson);
} catch (IOException e) {
e.printStackTrace();
}
}
}
输出:
com.fasterxml.jackson.databind.JsonMappingException: Multiple fields representing property "object": POJOClass#object vs POJOClass#objectList
https://stackoverflow.com/questions/61522570
复制相似问题