0
点赞
收藏
分享

微信扫一扫

使用 FastJson 和 Jackson 互转的一个坑


一个坑,简单记录一下。

序列化对象:

@Data
public class TestA {

private String sId;
}

由于是 lombok,会编译成:

使用 FastJson 和 Jackson 互转的一个坑_xml

将这个对象先用 FastJson 序列化,再用 JackSon parse 成对象:

@Data
public class TestA {

private String sId;

public static void main(String[] args) throws IOException {

ObjectMapper OBJECT_MAPPER = new ObjectMapper();

//jacksonToFastJson(OBJECT_MAPPER);
TestA ta = new TestA();
ta.setSId("a");
String s = JSONObject.toJSONString(ta);

TestA testA = OBJECT_MAPPER.readValue(s, TestA.class);
System.out.println(testA.getSId());
}

private static void jacksonToFastJson(ObjectMapper OBJECT_MAPPER) throws JsonProcessingException {
TestA ta = new TestA();
ta.setSId("a");
String s = OBJECT_MAPPER.writeValueAsString(ta);

TestA testA = JSONObject.parseObject(s, TestA.class);
System.out.println(testA.getSId());
}
}

 异常信息:

Exception in thread "main" com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "sId" (class com.spark.plan.service.TestA), not marked as ignorable (one known property: "sid"])
at [Source: (String)"{"sId":"a"}"; line: 1, column: 9] (through reference chain: com.spark.plan.service.TestA["sId"])
at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:61)
at com.fasterxml.jackson.databind.DeserializationContext.handleUnknownProperty(DeserializationContext.java:823)
at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:1153)
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1589)
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1567)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:294)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:151)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4013)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3004)

解决方案:

使用相同的序列化方式或者重新写 getXXX 方法为 getsid()。

举报

相关推荐

0 条评论