2016-07-05 83 views
0

我在這個格式樣本JSON:解析JSON的Python爲第二對象

JSON文件:

{ 
    "Name": "ABC", 
    "Phone":"123", 
    "Address":[{"City":"City-1"},{"Country":"Country-1"}] 
} 

{ 
    "Name": "ABC-1", 
    "Phone":"123-1", 
    "Address":[{"City":"City-2"},{"Country":"Country-2"}] 
} 

有沒有辦法通過解析該文件的JSON和循環,並打印每個key-value對。

我用的方法是通過使用

json_open = open(json_file) 
json_data = json.load(json_open) 
print(json_data[Name]) ##should give ABC 
print(json_data[Name]) ##should give ABC-1 - unsure about the syntax and format 

但我目前能夠只打印第一對象的值 - 即name=ABC而不是name=ABC-1

+1

才能添加預期的樣本輸出太前提? –

+0

這是一個有效的JSON?它應該只有一個字典而不是多個字典。 –

回答

1

。在你的JSON文件錯誤。我修改了你的json並編寫了遍歷其中每個元素的代碼。

Error:

Error: Parse error on line 9: 
... "Country-1" }]}{ "Name": "ABC-1", 
-------------------^ 
Expecting 'EOF', '}', ',', ']', got '{' 

sample.json

{ 
    "data": [ 
    { 
     "Name": "ABC", 
     "Phone": "123", 
     "Address": [ 
     { 
      "City": "City-1" 
     }, 
     { 
      "Country": "Country-1" 
     } 
     ] 
    }, 
    { 
     "Name": "ABC-1", 
     "Phone": "123-1", 
     "Address": [ 
     { 
      "City": "City-2" 
     }, 
     { 
      "Country": "Country-2" 
     } 
     ] 
    } 
    ] 
} 

sample.py

import json 

json_file='sample.json' 
with open(json_file, 'r') as json_data: 
    data = json.load(json_data) 

jin=data['data'] 

for emp in jin: 
     print ("Name :"+emp["Name"]) 
     print ("Phone :"+emp["Phone"]) 
     print ("City :"+emp["Address"][0]["City"]) 
     print ("Country :"+emp["Address"][1]["Country"]) 
+0

我看到你在解析JSON遇到錯誤,而是一個JSON可以以這種格式存在 - '{ 鍵:值, 鍵:值 } { 鍵:值, 關鍵:值 }' 我想解析這種類型的json,而不是像你在修改過的json文件中那樣將它轉換爲數組。 – FirstName

+0

json文件上的每條記錄都以','分隔。所以,你的文件應該是這樣: '[{ \t \t 「名稱」: 「ABC」, \t \t 「電話」: 「123」, \t \t 「地址」:[{ \t \t \t「城市「: 「市-1」 \t \t},{ \t \t \t 「國家」: 「國家-1」 \t \t}] \t}, \t { \t \t 「名稱」: 「ABC-1」, \t \t 「電話」: 「123-1」, \t \t 「地址」:[{ \t \t \t 「城市」: 「城-2」 \t \t},{ \t \t \t 「國家」: 「國家-2」 \t \t}] \t} ]' –

0

上JSON文件每個記錄由分離 ''。所以,你的文件應該是這樣:

[{ 
    "Name": "ABC", 
    "Phone": "123", 
    "Address": [{ 
     "City": "City-1" 
    }, { 
     "Country": "Country-1" 
    }] 
}, 

{ 
    "Name": "ABC-1", 
    "Phone": "123-1", 
    "Address": [{ 
     "City": "City-2" 
    }, { 
     "Country": "Country-2" 
    }] 
} 
] 

您可以讀取文件和輸出如下:

import json 

my_file='test.json' 
with open(my_file, 'r') as my_data: 
    data = json.load(my_data) 

print data 

for elm in data: 
    print elm['Phone'] 
    print elm['Name'] 
    print elm['Address'][0]['City'] 
    print elm['Address'][1]['Country'] 
0

這一切首先是無效的JSON格式,

您可以檢查here你json格式

你應該使用這個try.json文件

{ 
    "data":[{ 
     "Name": "ABC", 
     "Phone":"123", 
     "Address":[{"City":"City-1"},{"Country":"Country-1"}] 
     }, { 
     "Name": "ABC-1", 
     "Phone":"123-1", 
     "Address":[{"City":"City-2"},{"Country":"Country-2"}] 
    }] 
} 

這裏是try.py

import json 
json_open = open("try.json") 
json_data = json.load(json_open) 
for i in range(len(json_data['data'])): 
    print(json_data['data'][i]["Name"]) 

注:Python代碼寫在python3

輸出眼線此

ABC 
ABC-1