尝试使用 Jackson 序列化一个非常简单的对象时出现异常。错误:
org.codehaus.jackson.map.JsonMappingException:没有找到类 MyPackage.TestA 的序列化程序,也没有发现创建 BeanSerializer 的属性(为避免异常,请禁用 SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS)
下面是要序列化的简单类和代码。
谁能告诉我为什么我会收到这个错误?
public class TestA {
String SomeString = "asd";
}
TestA testA = new TestA();
ObjectMapper om = new ObjectMapper();
try {
String testAString = om.writeValueAsString(testA); // error here!
TestA newTestA = om.readValue(testAString, TestA.class);
} catch (JsonGenerationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JsonMappingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
原文由 Ted 发布,翻译遵循 CC BY-SA 4.0 许可协议
如前所述,
ObjectMapper
实例的默认配置是仅访问公共字段或具有公共 getter/setter 的属性。更改类定义以使字段公开或提供公共 getter/setter 的替代方法是指定(对基础VisibilityChecker
)不同的属性可见性规则。 Jackson 1.9 提供了ObjectMapper.setVisibility()
方便的方法。对于原始问题中的示例,我可能会将其配置为对于杰克逊 >2.0:
有关相关配置选项的更多信息和详细信息,我建议查看
ObjectMapper.setVisibility()
上的 JavaDocs 。