Java “反序列化”;[……”是;json作为空列表
我有一个带有Java “反序列化”;[……”是;json作为空列表,java,json,serialization,Java,Json,Serialization,我有一个带有ListlistField的类。此字段的JSON部分类似于“listField”:“[]”。我使用以下代码进行反序列化: ObjectMapper mapper = new ObjectMapper(); MyClass myClass = mapper.readValue(jsonAsString, MyClass.class); 但会引发一个异常: com.fasterxml.jackson.databind.JsonMappingException:无法反序列化java.ut
List
listField的类。此字段的JSON部分类似于“listField”:“[]”
。我使用以下代码进行反序列化:
ObjectMapper mapper = new ObjectMapper();
MyClass myClass = mapper.readValue(jsonAsString, MyClass.class);
但会引发一个异常:
com.fasterxml.jackson.databind.JsonMappingException:无法反序列化java.util.ArrayList的实例超出值\u字符串标记
fasterxml.jackson版本2.2.3
您能帮我解决这个问题吗?除了自定义反序列化程序外,还可以添加新的setter并忽略旧的setter。这对我有帮助
@JsonProperty("listField")
public void setListFieldAsString(String listFieldAsString) {
List<BigInteger> listFieldAsList = new ArrayList<BigInteger>();
try {
ObjectMapper objectMapper = new ObjectMapper();
listFieldAsList = objectMapper.readValue(listFieldAsString, new TypeReference<List<BigInteger>>() {});
} catch (IOException e) {
System.out.println("Error was detected!");
}
setListField(listFieldAsList);
}
@JsonIgnore
public void setListField(List<BigInteger> listField) {
this.listField = listField;
}
@JsonProperty(“listField”)
public void setListFieldAsString(字符串listFieldAsString){
List listFieldAsList=new ArrayList();
试一试{
ObjectMapper ObjectMapper=新的ObjectMapper();
listFieldAsList=objectMapper.readValue(listFieldAsString,new TypeReference(){});
}捕获(IOE异常){
System.out.println(“检测到错误!”);
}
setListField(listFieldAsList);
}
@杰索尼奥雷
公共无效集合列表字段(列表列表字段){
this.listField=listField;
}
除了自定义反序列化程序,还可以添加新的setter并忽略旧的setter。这对我有帮助
@JsonProperty("listField")
public void setListFieldAsString(String listFieldAsString) {
List<BigInteger> listFieldAsList = new ArrayList<BigInteger>();
try {
ObjectMapper objectMapper = new ObjectMapper();
listFieldAsList = objectMapper.readValue(listFieldAsString, new TypeReference<List<BigInteger>>() {});
} catch (IOException e) {
System.out.println("Error was detected!");
}
setListField(listFieldAsList);
}
@JsonIgnore
public void setListField(List<BigInteger> listField) {
this.listField = listField;
}
@JsonProperty(“listField”)
public void setListFieldAsString(字符串listFieldAsString){
List listFieldAsList=new ArrayList();
试一试{
ObjectMapper ObjectMapper=新的ObjectMapper();
listFieldAsList=objectMapper.readValue(listFieldAsString,new TypeReference(){});
}捕获(IOE异常){
System.out.println(“检测到错误!”);
}
setListField(listFieldAsList);
}
@杰索尼奥雷
公共无效集合列表字段(列表列表字段){
this.listField=listField;
}
为什么JSON字段“listField”:“[]”“
而不是“listField”:[]
?@khelwood,这是服务器响应。json错误吗?[]
是json中的空数组<代码>“[]”是一个包含两个括号的字符串。如果你希望它是一个数组,那就错了。@khelwood,你是对的。服务器端有@JsonSerialize(使用=ToStringSerializer.class)
注释。但是我可以从这个字符串值中检索列表吗?为什么JSON字段“listField”:“[]”“
而不是“listField”:[]
?@khelwood,这是服务器响应。json错误吗?[]
是json中的空数组<代码>“[]”是一个包含两个括号的字符串。如果你希望它是一个数组,那就错了。@khelwood,你是对的。服务器端有@JsonSerialize(使用=ToStringSerializer.class)
注释。但我可以从这个字符串值中检索列表吗?