我有一个类的数组列表,如下所示:
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>();
}
我想把这个列表写成Json,并尝试了以下代码:
Writer out = new PrintWriter("./test.json");
mapper.writerWithDefaultPrettyPrinter().writeValueas(out, persons);
并收到以下错误信息:
找不到类~~~~~的序列化程序,也找不到创建BeanSerializer的属性(为了避免异常,请禁用SerializationFeature.FAIL_ON_EMPTY_BEANS)(通过引用链:java.util.ArrayList[0])`
我尝试添加映射器。禁用(SerializationFeature.FAIL_ON_EMPTY_BEANS)
但由于未知原因,它使所有Person对象都为空。
我做错了什么?
Person类中的所有字段都使用默认的访问说明符。要么公开字段,要么添加公共getter方法。下课应该有用。
public class Person {
private String name;
private String age ;
private List<String> education = new ArrayList<String> ();
private List<String> family = new ArrayList<String> ();
private List<String> previousjobs = new ArrayList<String>();
public String getName() {
return name;
}
public String getAge() {
return age;
}
public List<String> getEducation() {
return education;
}
public List<String> getFamily() {
return family;
}
public List<String> getPreviousjobs() {
return previousjobs;
}
}
如果POJO在我们的控制之下,我们可以如上所述修改POJO。如果POJO不受控制,我们可以将可见性设置为如下任何objectMapper。设置可见性(PropertyAccessor.FIELD,Visibility.ANY);
从这里摘录:
默认情况下,Jackson 2将仅使用公共字段或具有公共getter方法的字段-序列化所有字段私有或包私有的实体将失败:
您的Person
的所有字段都受包保护,并且没有getter,因此会显示错误消息。禁用消息自然无法解决问题,因为在Jackson看来,类仍然是空的。这就是为什么你会看到空的对象,最好不要出错。
您需要将所有字段公开
,例如:
public class Person {
public String name;
// rest of the stuff...
}
或者为每个字段创建一个公共getter(最好也将字段设置为私有),比如:
public class Person {
private String name;
public String getName() {
return this.name;
}
// rest of the stuff...
}
无法编写JSON:找不到org.json.jsonObject类的序列化程序,也找不到创建BeanSerializer的属性(为了避免异常,禁用SerializationFeature.fail_on_empty_beans) UserService.getUserList():
问题内容: 从Web服务获取Json Array的JSON作为响应 在JsonArray中获取响应后,在读取Json Array的Json对象时出现错误: 找不到针对类org.json.JSONObject的序列化程序,也没有发现创建BeanSerializer的属性(为避免异常,请禁用SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS)) 问题答案:
有来自web服务的JSON,JSON数组作为响应 在JsonArray中获取响应后,读取Json数组的Json对象时出错: 没有找到JSONObject类org.json.序列化程序,也没有发现创建BeanSerializer的属性(为了避免异常,禁用SerializationConfig. Feature.FAIL_ON_EMPTY_BEANS))
问题内容: 从Web服务获取Json Array的JSON作为响应 在JsonArray中获得响应后,在读取Json Array的Json对象时出现错误: 找不到针对类org.json.JSONObject的序列化程序,也没有发现创建BeanSerializer的属性(为避免异常,请禁用SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS)) 问题答案:
我得到这个错误“嵌套异常是org.springframework.http.converter.HttpMessageConversionException:类型定义错误:[简单类型,类org.json.JSONObject];嵌套异常是com.fasterxml.jackson.databind.exc.InvalidDefitionException:运行项目时,没有为类org.json.JS
当我试图导航到一个endpoint时,我得到以下错误 类型定义错误:[简单类型,类org.hibernate.proxy.pojo.ByteBuddy.ByteBuddyInterceptor];嵌套异常为com.fasterxml.jackson.databind.exc.InvalidDefinitionException:未找到类org.hibernate.proxy.pojo.ByteBu