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]
看起来无效。invalidjson
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>>() {});