当我试图使用Jackson序列化一个非常简单的对象时,我得到了一个异常。错误:

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();
}

当前回答

Jackson使用getter和setter序列化。/反序列化。 所以在模型类中添加getter和setter。

其他回答

请在bean的类级别使用此命令:

@JsonIgnoreProperties(value={"hibernateLazyInitializer","handler","fieldHandler"})

添加getter/setter为我解决了这个问题。 可以手动添加getter/setter,也可以使用Lombok注释@Getter/@Setter/@Data。

Jackson使用getter和setter序列化。/反序列化。 所以在模型类中添加getter和setter。

虽然我添加了getter和setter,但我得到了相同的错误。后来我发现了一个bug,这是由声纳的建议,我cgahnged的getter和setter作为保护,这是导致问题的原因。一旦我修复了,它就会像预期的那样工作。

Jackson要序列化该类,SomeString字段需要是公共的(目前它是包级隔离),或者需要为它定义getter和setter方法。