提问人:user8024165 提问时间:11/17/2023 更新时间:11/17/2023 访问量:31
将 Object 属性反序列化为 JsonNode 的 Jackson 注解
Jackson annotation of deserialize Object property into JsonNode
问:
这是一个用于调用 REST API 的 Java 模型类。属性“value”的类型是 Object,因为 json 是嵌套的。
public class request {
public String id;
public Object value;
}
在单元测试中,我想将属性“value”反序列化为“JsonNode”。
如何在没有自定义反序列化程序的情况下注释类?
答:
1赞
Alireza Nazari
11/17/2023
#1
若要在不使用自定义反序列化程序的情况下将“value”属性反序列化为 JsonNode,可以使用 Jackson 的 @JsonRawValue 注释。通过此注释,可以指示应将属性序列化和反序列化为原始 JSON 值。
您可以像这样修改请求类:
public class Request {
public String id;
@JsonRawValue
public Object value;
}
评论
0赞
user8024165
11/17/2023
@JsonRawValue会中断序列化吗?如果值为 String,则不会对特殊字符进行转义。
0赞
Alireza Nazari
11/17/2023
如果值为 String 且包含特殊字符,则使用 @JsonRawValue可能会导致问题,因为特殊字符不会自动转义。
0赞
user8024165
11/17/2023
#2
我找到了一个解决方法:为杰克逊提供一个 setter 方法
@Data
@NoArgsConstructor
public class Request {
private String id;
private Object value;
@JsonProperty("value")
public void setJsonNodeToValue(JsonNode n) {
value = n;
}
}
评论