关于jackson解析复杂json,该怎么解析
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于jackson解析复杂json,该怎么解析相关的知识,希望对你有一定的参考价值。
参考技术A 定义好ObjectMapper的目标类,你这个也不复杂啊,又不是循环引用定义了这个类, 用readValue转的时候, 报了一个异常
Unexpected token (START_OBJECT), expected VALUE_STRING: need JSON String that contains type id (for subtype of java.util.List)本回答被提问者和网友采纳
将json字符串解析为具有复杂数据结构的java(jackson)
我试图将下面的json字符串转换为java对象,但我得到空对象。在prop2对象下,可以有任意数量的键值对(其中键是一个字符串,值是一个数组)
{
"Level1": {
"prop1": "",
"prop2": {
"one": [{
"ip": "1.2.3.4",
"port": "100"
}],
"ten": [{
"ip": "10.20.20.10",
"port": "200"
}]
}
}
}
我有这个类结构,但是我得到ipAndPorts map为空。
@JsonIgnoreProperties(ignoreUnknown = true)
static class Root {
@JsonProperty("Level1")
private Level1 level1;
}
@JsonIgnoreProperties(ignoreUnknown = true)
static class Level1 {
@JsonProperty("prop2")
private Prop2 prop2;
}
@JsonIgnoreProperties(ignoreUnknown = true)
static class Prop2 {
private Map<String, List<IpAndPort>> ipAndPorts = Collections.emptyMap();
}
@JsonIgnoreProperties(ignoreUnknown = true)
static class IpAndPort {
@JsonProperty("port")
private String port;
}
我的java类应该如何正确表示“prop2”?
答案
记录:问题通过使用解决了
@JsonIgnoreProperties(ignoreUnknown = true)
static class Level1 {
@JsonProperty("prop2")
private Map<String, List<IpAndPort>> ipAndPorts = Collections.emptyMap();
}
直接没有Prop2
类。否则Jackson会在ipAndPorts
JSON对象下期望一个名为prop2
的JSON属性。
另一答案
我想说你首先要按照它想要的方式创建你的Java类,然后使用Jackson将它序列化为JSON。您将看到结果JSON的结构是什么,并查看是否以及如何修改您的类。
以上是关于关于jackson解析复杂json,该怎么解析的主要内容,如果未能解决你的问题,请参考以下文章
常用有三种json解析jacksonfastjsongson。
定制 Jackson 解析器来完成对复杂格式 XML 的解析
关于使用jackson.jar解析JSON时,大写JSON key值发生报错的问题
将json字符串解析为具有复杂数据结构的java(jackson)
@RequestBody jackson解析复杂的传入值的一个坑;jackson解析迭代数组;jackson多重数组;jakson数组