Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将嵌套数组中的值映射到属性_Java_Json_Spring_Jackson - Fatal编程技术网

Java 如何将嵌套数组中的值映射到属性

Java 如何将嵌套数组中的值映射到属性,java,json,spring,jackson,Java,Json,Spring,Jackson,我试图解析json并在数组中获取值- { "hits": { "hits": [ { "name": [ { "family": "Doe", "given": "Jon", "middle": "

我试图解析json并在数组中获取值-

 {
  "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");
}