【发布时间】:2015-10-02 19:34:10
【问题描述】:
我正在尝试反序列化,然后序列化一个 java 对象。 我有一个像这样的对象-
public class Blas{
private Integer blasRootId;
private List<Bla> blaList = new ArrayList<>();
public Blas() {}
/region g & s
getter and setters ..
//endregion
}
还有对象——
public class Bla{
private String fileName;
private String description;
private Integer id;
public Bla() {}
//region g & s
getter and setters ..
//endregion
}
我用
反序列化对象ObjectMapper mapper = new ObjectMapper();
mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
String jsonString = mapper.writeValueAsString(Blas);
而创建的json就像
{
"Blas": {
"blasRootId": 2840,
"blaList": [
"java.util.ArrayList",
[
{
"fileName": "RegularPayload",
"description": "",
"id": 2260
}
]
]
}
}
所以当我尝试序列化创建的 json 时,会出现以下错误 -
Can not instantiate value of type [simple type, class Bla] from String value ('java.util.ArrayList'); no single-String constructor/factory method
我可以让反序列化器按原样编写列表,而不添加“java.util.ArrayList”列表,或者我怎样才能正确读取它?
更新: 这是我的错误,我在“mapper.configure”中添加了一个参数(我不记得是哪个)导致序列化程序添加“java.util.ArrayList”。 我的代码示例应该可以正常工作。
【问题讨论】:
-
顺便说一句:创建JSON的过程称为序列化,重新读取它是反序列化,而不是相反。
-
请提供创建 Blas 对象的代码。我正在尝试重现,但有我的输出: {"blasRootId":8,"blaList":[{"fileName":"name","description":"desc","id":1}]}
标签: java json serialization arraylist jackson