我是python的新手。我正在编写代码,我需要读取json文件,并将其中的一些数据转储到新的json文件中。 以下是我的代码:
if vmName=='IGW':
with open(APIJSONPath+NwIntfJSONFileName) as f:
data=json.load(f)
for item in data['Interfaces']:
jdata=item
with open(NwIntfJSONPath+vmName+'.json','w') as c:
json.dump(jdata,c,indent=2)
以下是我的json文件数据的一小部分,该代码应该从中检索eth0和eth1的接口详细信息(接口名称,IPAddress,PrefixLength,DefaultGateway):
{
"Interfaces": [{
"Name": "eth0",
"IPConfigurations": [{
"IPAddress": "10.0.3.7",
"PrefixLength": 24,
"DefaultGateway": "10.0.3.1",
"IsPrimary": true
}],
"Description0": "connected to cloudsimple network",
"IsPrimary": true
} ,
{
"Name": "eth1",
"IPConfigurations": [{
"IPAddress": "10.0.3.8",
"PrefixLength": 24,
"DefaultGateway": "10.0.3.1",
"IsPrimary": true
}],
"Description1": "connected to internet"
}
]
}
但是转储新json文件的数据是:
{
"Name": "eth1",
"IPConfigurations": [
{
"PrefixLength": 24,
"IsPrimary": true,
"IPAddress": "10.0.3.8",
"DefaultGateway": "10.0.3.1"
}
],
"Description1": "connected to internet"
}
只有eth1详细信息被转储,而不是eth0。转储的数据也是无序的。
有人可以帮我解决一下,我哪里出错,以及如何解决我的代码中的这两个问题?提前谢谢。
答案 0 :(得分:2)
如果您需要输出json中数据['接口'] 的所有内容,请使用以下代码段。
if vmName=='IGW':
with open(APIJSONPath+NwIntfJSONFileName) as f:
data=json.load(f)
with open(NwIntfJSONPath+vmName+'.json','w') as c:
json.dump(data['Interfaces'],c,indent=2)
在您的示例中,您循环访问数据['接口']并且jdata保存列表的最后一个值。这就是为什么你只得到输出json中的最后一个元素。