【发布时间】:2022-01-05 02:15:04
【问题描述】:
使用 Jackson 反序列化,有一个选项会很棒
将 JSON 项目数组(任何性质:对象、数字、字符串)反序列化为 Java 字符串数组。
我看到@JsonRawValue 允许为嵌套字段提供类似的功能。
是否可以为“顶级”对象实现相同的功能?
void test(){
var payload = """ [
{"a": 1, "b": "hello"},
{"a": 2, "b": "bye"},
"something"
]
""";
// What else is required to get the effect of @JsonRawValue ?
String[] rawItems = new ObjectMapper().readValue(payload, String[].class);
assertEquals("""{"a": 1, "b": "hello"}""", rawItems[0]);
assertEquals("""{"a": 2, "b": "bye"}""", rawItems[1]);
assertEquals("\"something\"", rawItems[2]);
}
【问题讨论】:
-
杰克逊会允许这种格式错误的 JSON 吗?
something不是键值对,不是吗?还是您对允许此类字符串也有疑问? -
@SreeKumar 根据规范,这是一个有效的 JSON。我希望 Jackson 至少在将其解析为 JsonNode 结构时能够正常处理它。
标签: java json jackson deserialization json-deserialization