我正在尝试解析json并在数组中获取值-
{
"hits": {
"hits": [
{
"name": [
{
"family": "Doe",
"given": "Jon",
"middle": "Smith",
"use": "Commercial"
}
]
}
]
}
}
我意识到我在根级别还有一个数组,因此我决定先解析一个列表的hits
,然后再解析另一个列表的name
。我可以在响应中看到整个名称数组,但我宁愿只希望看到映射到given
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");
}
预期输出-
{
"fstNm": "Jon"
}
在这里,我将不胜感激。
答案 0 :(得分:1)
只需如下更改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");
}
答案 1 :(得分:0)
不确定为什么名称必须与匹配项相同
private List<Map<String,Object>> name;
我认为您可以通过将name声明为
来获得name的所有值 `ArrayList<String> name;`
您可以在此处尝试设置类似的名称
ArrayList<String> name = (List) hits.get(0).get("name");
然后,您可以创建一个get方法来获取名称,然后像在您的setter中一样访问它
ArrayList<String> name = getName();
fstNm = name.get(2);