我下面有一个实体类,包含两个字符串字段:name和description。其中description字段应该包含原始的JSON值,例如{ "abc": 123 }。
我有一份使用Jackson进行序列化和反序列化的简单测试代码,如下所示:
考虑到存在@JsonRawValue注解,您如何建议将创建的JSON字符串编组回实体对象?是否还有其他我需要了解的注解?
谢谢。
@Getter
@Setter
public class Entity {
private String name;
@JsonRawValue
private String descriptionJson;
}
我有一份使用Jackson进行序列化和反序列化的简单测试代码,如下所示:
Entity ent = new Entity();
ent.setName("MyName");
ent.setDescriptionJson("{ \"abc\": 123 }");
// Convert Object to JSON string
String json = mapper.writeValueAsString(ent);
// Convert JSON string back to object
Entity ent2 = mapper.readValue(json, Entity.class);
在将对象转换为JSON时,当设置@JsonRawValue时,描述字符串会被嵌套:
{"name":"MyName","descriptionJson":{ "abc": 123 }}
然而,当我调用Jackson mapper.readValue函数将JSON字符串读回实体对象时,我会遇到异常:
com.fasterxml.jackson.databind.exc.MismatchedInputException:
Cannot deserialize instance of `java.lang.String` out of START_OBJECT token
at [Source: (String)"{"name":"MyName","descriptionJson":{ "abc": 123 }}"; line: 1, column: 36] (through reference chain: com.test.Entity["descriptionJson"])
考虑到存在@JsonRawValue注解,您如何建议将创建的JSON字符串编组回实体对象?是否还有其他我需要了解的注解?
谢谢。