Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.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

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中的Json:如何提取子元素列表?_Java_Json_Jackson - Fatal编程技术网

Java中的Json:如何提取子元素列表?

Java中的Json:如何提取子元素列表?,java,json,jackson,Java,Json,Jackson,如果我有 { "took": 4, "timed_out": false, "hits": { "total": 14, "max_score": 1, "hits": [ { "_index": "someIndex", "_source": { "id": "de",

如果我有

{
     "took": 4,
     "timed_out": false,
     "hits": {
          "total": 14,
          "max_score": 1,
          "hits": [
             {
                "_index": "someIndex",
                "_source": {
                   "id": "de",
                   "title": "something 1"
                   },
                "_index": "someIndex",
                "_source": {
                   "id": "def",
                   "title": "something 1"
                   }
              }
          ]
    }
}
如何使用简单的
ObjectMapper
方法仅提取源列表?我不想自己处理每个节点。

您可以尝试使用

List sources=JsonPath.read(“{\n”+
“\n”+
“take\”:4\n+
“\”超时\“:错误,\n”+
“\”点击次数\“:{\n”+
“总计”:14\n+
“最大分数”:1\n+
“\”点击次数\:[\n”+
“{\n”+
“\”\u index\:\“someIndex\”,\n”+
“\”\u source\“:{\n”+
“\”id\“:\”def\“,\n”+
“\“title\:\“某物1\”\n”+
“}\n”+
“}\n”+
“]\n”+
“}\n”+
“\n”+
“}”,“$.hits.hits[*]。\u source[*]”;
系统输出打印项次(来源);

我认为有效的json如下

{
  "took": 4,
  "timed_out": false,
  "hits": {
    "total": 14,
    "max_score": 1,
    "hits": [
      {
    "_index": "someIndex",
    "_source": {
      "id": "de",
      "title": "something 1"
    }
      },
      {
    "_index": "someIndex",
    "_source": {
      "id": "def",
      "title": "something 1"
    }
      }
    ]
  }
}
如果是这样的话,你可以得到它作为

ObjectMapper mapper = new ObjectMapper();
JsonNode data = mapper.readTree(json);
data.findValues("_source"); // [{"id":"de","title":"something 1"}, {"id":"def","title":"something 1"}]
//If you want to convert it to custom object
List<Source> sources = mapper.convertValue(data.findValues("_source"), new TypeReference<List<Source>>() {});
ObjectMapper mapper=new ObjectMapper();
JsonNode data=mapper.readTree(json);
data.findValue(“_source”);//[{“id”:“de”,“title”:“something 1”},{“id”:“def”,“title”:“something 1”}]
//如果要将其转换为自定义对象
List sources=mapper.convertValue(data.findValues(“_source”),new TypeReference(){});

您确定已正确过账吗
obj.hits.hits[0]
看起来无效。invalid
json
massaegI简化了数据并删除了一些字段——这就是错误所在。我把它搞定了,我想把这个值自动转换成java对象。就像映射器在正常情况下所做的那样。可能。。假设您有一个类源。然后你可以使用对流值法。更新了我的答案。。
ObjectMapper mapper = new ObjectMapper();
JsonNode data = mapper.readTree(json);
data.findValues("_source"); // [{"id":"de","title":"something 1"}, {"id":"def","title":"something 1"}]
//If you want to convert it to custom object
List<Source> sources = mapper.convertValue(data.findValues("_source"), new TypeReference<List<Source>>() {});