将json字符串解析为具有复杂数据结构的java(jackson)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将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的结构是什么,并查看是否以及如何修改您的类。
以上是关于将json字符串解析为具有复杂数据结构的java(jackson)的主要内容,如果未能解决你的问题,请参考以下文章