702*_*279 5 java serialization json jackson
我有一个类的 ArrayList,如下所示:
public class Person {
String name;
String age
List<String> education = new ArrayList<String> ();
List<String> family = new ArrayList<String> ();
List<String> previousjobs = new ArrayList<String>();
}
Run Code Online (Sandbox Code Playgroud)
我想将此列表编写为 Json 并尝试使用以下代码:
Writer out = new PrintWriter("./test.json");
mapper.writerWithDefaultPrettyPrinter().writeValueas(out, persons);
Run Code Online (Sandbox Code Playgroud)
并收到此错误消息:
没有找到类~~~~~~ 的序列化器,也没有发现创建 BeanSerializer 的属性(为了避免异常,禁用 SerializationFeature.FAIL_ON_EMPTY_BEANS)(通过引用链:java.util.ArrayList[0])`
我尝试添加,mapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS)
但由于某些未知原因,它使所有人员对象都为空。
我怎么了?
pir*_*rho 11
摘自这里:
默认情况下,Jackson 2 仅适用于公共字段或具有公共 getter 方法的字段 - 序列化具有所有字段私有或包私有的实体将失败:
您的Person
所有字段都受到保护,并且没有 getter,因此出现错误消息。禁用消息自然不会解决问题,因为类仍然是empty
从杰克逊的角度来看的。这就是为什么您看到空对象并且最好保留错误的原因。
您需要创建所有字段public
,例如:
public class Person {
public String name;
// rest of the stuff...
}
Run Code Online (Sandbox Code Playgroud)
或为每个字段创建一个公共 getter(最好也将字段设置为私有),例如:
public class Person {
private String name;
public String getName() {
return this.name;
}
// rest of the stuff...
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7992 次 |
最近记录: |