【发布时间】:2019-10-03 10:11:48
【问题描述】:
我很难从我的 json 文件中获取一些数据。我能够获取一些数据,但是当我想深入挖掘更多细节时,我遇到了错误并且卡在了哪里。
运行下面的脚本返回错误
AttributeError: 'list' object has no attribute 'get'
我知道它是一个列表,但我不确定如何获取对象列表的其余部分。
脚本
ifile=open('source.json', 'r')
ofile=open('extract.json', 'w')
json_decode=json.load(ifile)
myresult=[]
for item in json_decode:
mydict={}
mydict['sID']=item.get('Ls id')
my_dict['dID']=item.get('items').get('Link ID').get('Metric').get('Link Type')
mydict['type']=item.get('Type')
myresult.append(mydict)
myjson=json.dumps(myresult, ofile)
ofile.write(myjson)
ofile.close()
源 Json 文件
[
{
"Ls age": "201",
"items": [
{
"Link ID": "1.1.1.2",
"Link Type": "StubNet",
"Metric": "1",
"Data": "255.255.255.255",
"Priority": "Medium"
},
{
"Link ID": "1.1.1.4",
"Link Type": "P-2-P",
"Metric": "1",
"Data": "192.168.100.34"
},
{
"Link ID": "192.168.100.33",
"Link Type": "StubNet",
"Metric": "1",
"Data": "255.255.255.255",
"Priority": "Medium"
},
{
"Link ID": "1.1.1.1",
"Link Type": "P-2-P",
"Metric": "1",
"Data": "192.168.100.53"
}
],
"Len": "84",
"Ls id": "1.1.1.2",
"Adv rtr": "1.1.1.2",
"Type": "Router",
"Link count": "5"
},
{
"Ls age": "1699",
"seq#": "80008d72",
"items": [
{
"Link ID": "1.1.1.1",
"Link Type": "StubNet",
"Metric": "1",
"Data": "255.255.255.255",
"Priority": "Medium"
},
{
"Link ID": "1.1.1.1",
"Link Type": "StubNet",
"Metric": "12",
"Data": "255.255.255.255",
"Priority": "Medium"
},
{
"Link ID": "1.1.1.3",
"Link Type": "P-2-P",
"Metric": "10",
"Data": "192.168.100.26"
},
{
"Link ID": "192.168.100.25",
"Link Type": "StubNet",
"Metric": "10",
"Data": "255.255.255.255",
"Priority": "Medium"
},
{
"Link ID": "1.1.1.2",
"Link Type": "P-2-P",
"Metric": "10",
"Data": "192.168.100.54"
},
{
"Link ID": "192.168.100.53",
"Link Type": "StubNet",
"Metric": "10",
"Data": "255.255.255.255",
"Priority": "Medium"
}
],
"Len": "96",
"Ls id": "1.1.1.1",
"chksum": "0x16fc",
"Adv rtr": "1.1.1.1",
"Type": "Router",
"Options": "ASBR E",
"Link count": "6"
}
]
预计结果如下
[
{
"type": "Router",
"sID": "1.1.1.2",
"dID": "1.1.1.2",
"LinkType":"StubNet",
"Metric":"1"
},
{
"type": "Router",
"sID": "1.1.1.2",
"dID": "1.1.1.4",
"Link Type": "P-2-P",
"Metric": "1"
},
{
"type": "Router",
"sID": "1.1.1.2",
"dID": "192.168.100.33",
"LinkType":"StubNet",
"Metric":"1"
},
{
"type": "Router",
"sID": "1.1.1.2",
"dID":"1.1.1.1",
"Link Type": "P-2-P",
"Metric": "1"
},
{
"type": "Router",
"sID": "1.1.1.1",
"dID": "1.1.1.1",
"LinkType":"StubNet",
"Metric":"1"
},
{
"type": "Router",
"sID": "1.1.1.1",
"dID":"1.1.1.1",
"Link Type": "StubNet",
"Metric": "12"
},
{
"type": "Router",
"sID": "1.1.1.1",
"dID": "1.1.1.3",
"LinkType":"P-2-P",
"Metric":"10"
}
]
感谢您建议如何进一步进行。我四处搜索并尝试错误,但仍然无法解决它。感谢您的建议和支持。谢谢
【问题讨论】: