解析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
。在你的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"])
我看到你在解析JSON遇到错误,而是一个JSON可以以这种格式存在 - '{ 键:值, 键:值 } { 键:值, 关键:值 }' 我想解析这种类型的json,而不是像你在修改过的json文件中那样将它转换为数组。 – FirstName
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
才能添加预期的样本输出太前提? –
这是一个有效的JSON?它应该只有一个字典而不是多个字典。 –