我有一个实体类,下面有两个字符串字段:名称和描述。描述字段将包含一个原始 JSON 值,例如 { "abc": 123 }
@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);
转换 Object -> 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 字符串编组回实体对象?我还缺少另一个注释吗?
尚方宝剑之说
偶然的你
MMMHUHU
相关分类