2017-06-14 78 views
-1

我想解析此结构是一个elasticsearch过滤器:如何使JSON解析器解析java中的elasticsearch映射?

{ 
"filter": { 
    "name_synonyms_filter": { 
    "synonym_path": "sample.txt", 
    "type": "abc_synonym_filter" 
    }, 
    "name_formatter": { 
     "name": "name_formatter", 
     "type": "abc_token_filter" 
    } 
    } 
} 

我的问题是如何访问各个过滤器,而无需使用钥匙(“name_synonyms_filter”等)在Java?

+0

验证:你确实有''abc“:{}'那里,而不是''abc”:[]'?因为你所拥有的不是JSON,如果它不是JSON,那么你不能解析它。你可以a)手动修复源代码使其成为有效的JSON,b)以某种方式以编程方式修复源代码(这取决于实际内容和文件可能的内容,这是多么困难,c)编写自己的分析器。 –

+0

另外,您使用哪种语言来处理数据? –

+0

我看到你再次更新了这个例子。虽然这是有效的JSON,但是在一个对象中有多个具有相同键的条目是非常罕见的,因为大多数语言都只需要最后一个条目。那真的是你的? –

回答

2

您的JSON格式不正确。

这是固定的:

{ 
    "abc": [{ 
      "name": "somename" 
     }, 
     { 
      "name": "somename" 
     } 
    ] 
} 

如何分析它:

let x = JSON.parse({ 
    "abc": [{ 
      "name": "somename" 
     }, 
     { 
      "name": "somename" 
     } 
    ] 
}); 

console.log(x); 

让我知道如果您有任何问题。

+0

编辑这个问题谢谢指出。 –

+0

“abc”仍然不是jsonarray它就像一个json列表,所以我的问题是我如何解析json列表? –

+0

@TechnocratSid你添加了'{}'而不是'[]',这个json不正确。您可以使用https://jsonlint.com/查看原因。 – Moshe