Java 如何将嵌套数组中的值映射到属性
我试图解析json并在数组中获取值-Java 如何将嵌套数组中的值映射到属性,java,json,spring,jackson,Java,Json,Spring,Jackson,我试图解析json并在数组中获取值- { "hits": { "hits": [ { "name": [ { "family": "Doe", "given": "Jon", "middle": "
{
"hits": {
"hits": [
{
"name": [
{
"family": "Doe",
"given": "Jon",
"middle": "Smith",
"use": "Commercial"
}
]
}
]
}
}
我意识到我在根级别还有一个数组,所以我决定解析hits
这是一个列表,然后解析name
这是另一个列表。我可以在响应中看到整个名称数组,但我更希望只看到映射到fstNm
private String fstNm;
private List<Map<String,Object>> name;
public String getFstNm() { return fstNm; }
@JsonProperty("hits")
public void setFstNm(List<Map<String, Object>> hits) {
name = (List) hits.get(0).get("name");
this.fstNm= (String) name.get(0).get("given");
}
我非常感谢您的帮助。不知道为什么您的名称必须与hits的对象类型相同
private List<Map<String,Object>> name;
私有列表名称;
我认为通过将name声明为
`ArrayList<String> name;`
`ArrayList名称`
从那里,您可以尝试设置名称,例如
ArrayList<String> name = (List) hits.get(0).get("name");
arraylistname=(List)hits.get(0.get(“name”);
然后,您可以创建一个get方法来获取名称,然后在setter中访问它,如
ArrayList<String> name = getName();
fstNm = name.get(2);
ArrayList name=getName();
fstNm=name.get(2);
只需更改setFstNm()
方法,如下所示
@JsonProperty("hits")
public void setFstNm(Map<String, List<Map<String, Object>>> hits) {
name = (List) hits.get("hits").get(0).get("name");
this.fstNm = (String) name.get(0).get("given");
}
@JsonProperty(“hits”)
公共void setFstNm(地图点击数){
name=(List)hits.get(“hits”).get(0.get(“name”);
this.fstNm=(字符串)name.get(0.get(“给定”);
}
您可以添加预期的output@deadshot我已经添加了预期输出您是否尝试了我刚做的@Jsonignore
@deadshot,它忽略了命中,但如何将字段中的值映射到fstNm?您发布的代码是否有效?我尝试了您建议的方法,但得到的是空值,即null
@JsonProperty("hits")
public void setFstNm(Map<String, List<Map<String, Object>>> hits) {
name = (List) hits.get("hits").get(0).get("name");
this.fstNm = (String) name.get(0).get("given");
}