解析JSON的Python为第二对象

问题描述:

我在这个格式样本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?它应该只有一个字典而不是多个字典。 –

。在你的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} ]' –

上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'] 

这一切首先是无效的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