2015-11-24 117 views
-1

我有這樣的疑問:
在文件中我有多個JSON行這樣JSON路徑讀取

{"id":1,"my_struct":{"other_id":1,"text":"HelloWorld0"}} 
{"id":2,"my_struct":{"other_id":12,"text":"HelloWorld1"}} 
{"id":3,"my_struct":{"other_id":123,"text":"HelloWorld2"}} 

我試圖讓使用JSON路徑查詢數據:

&.id 

和我得到空線。
但是,如果我在文件中使用相同的JSON路徑查詢只用一條線

{"id":1,"my_struct":{"other_id":1,"text":HelloWorld0}} 

我得到正確的結果:1
我做錯了嗎?我怎樣才能得到所有的ID?

+0

該文件無效JSON。你必須指定使用哪一行。 – Biffen

+0

是否可以迭代所有JSON行? – UNIm95

+0

呃,'* JSON行*'是什麼意思呢?如果每一行都是有效的JSON,那麼是的,可以遍歷行,並使用您最喜歡的工具來完成這些任務。 – Biffen

回答

1

根據你的例子,這是不正確的JSON格式。實際上,你可以驗證JSON或在這個在線工具生成JSON:http://www.jsoneditoronline.org/

請在這裏的例子閱讀更多細節JsonPath:https://github.com/jayway/JsonPath#user-content-path-examples

爲了使您的JSON有效的,它應該是這種格式:

[ 
    {"id":1,"my_struct":{"other_id":1,"text": "HelloWorld0 Value"}}, 
    {"id":2,"my_struct":{"other_id":12,"text": "HelloWorld1 Value"}}, 
    {"id":3,"my_struct":{"other_id":123,"text": "HelloWorld2 Value"}} 
] 

要回答你如何讓所有的ID,將使用"$.[*].id"問題。

+0

該死的。你是對的。當我用[]包圍這一切,並添加逗號「$。[*] .id」開始工作。是否有可能在不重寫的情況下讀取文件(不添加[,]和)? – UNIm95

+1

@ UNIm95簡短的回答是肯定的,這是可能的。您只需從文件中讀取每行的JSON對象,然後通過將數組中的字符串推入並轉換來以編程方式創建正確的格式。仍然在JSON結構中添加括號和逗號很重要,因爲它是由JSON構成的。 – vincent