我在尝试使用Jackson序列化一个非常简单的对象时遇到异常。错误:
org.codehaus.jackson.map.JsonMappingException:找不到的序列化程序
类MyPackage.TestA,没有属性
发现以创建BeanSerializer(要避免异常,请禁用
SerializationConfig.Feature.FAIL(在\u空的\u bean上)
下面是要序列化的简单类和代码
有人能告诉我为什么我会犯这个错误吗
公共类测试{
String SomeString=“asd”;
}
TestA TestA=新约书();
ObjectMapper om=新的ObjectMapper();
试一试{
String TestAsString=om.writeValueAsString(testA);//此处出错!
TestA newTestA=om.readValue(testAString,TestA.class);
}捕获(JsonGenerationException e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(JsonMappingException e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
如前所述,ObjectMapper实例的默认配置是仅访问公共字段或具有公共getter/setter的属性。更改类定义以使字段公开或提供公共getter/setter的另一种方法是指定(对于底层的VisibilityChecker)不同的属性可见性规则。Jackson 1.9提供了ObjectMapper.setVisibility()方便的方法。对于原始问题中的示例,我可能会将其配置为
myObjectMapper.setVisibility(JsonMethod.FIELD,Visibility.ANY);
对于Jackson>2.0:
myObjectMapper.setVisibility(PropertyAccessor.FIELD,Visibility.ANY);
有关相关配置选项的更多信息和详细信息,我建议查看ObjectMapper.setVisibility()上的JavaDocs