python-2.7 - 如何使用户需要 JSON
问题描述
我有一个 JSON 文件,其中三个对象可用,其中第二个和第三个对象没有我实际需要的一些字段。在缺少的字段中,我需要添加自己的值。我将在下面提供我的代码
我试过这个到目前为止:
with open("final.json") as data1:
a = json.load(data1)
final = []
for item in a:
d = {}
d["AppName"]= item["name"]
d["AppId"] = item["id"]
d["Health"] = item["health"]
d["place1"] = item["cities"][0]["place1"]
d["place2"] = item["cities"][0]["place2"]
print(final)
错误:我收到关键错误
我的输入 JSON 文件有类似的数据:
[{
"name": "python",
"id": 1234,
"health": "Active",
"cities": {
"place1": "us",
"place2": "newyork"
}
},
{
"name": "java",
"id": 2345,
"health": "Active"
}, {
"name": "python",
"id": 1234
}
]
我期待输出:
[{
"name": "python",
"id": 1234,
"health": "Active",
"cities": {
"place1": "us",
"place2": "newyork"
}
},
{
"name": "java",
"id": 2345,
"health": "Null",
"cities": {
"place1": "0",
"place2": "0"
}
}, {
"name": "python",
"id": 1234,
"health": "Null",
"cities": {
"place1": "0",
"place2": "0"
}
}
]
解决方案
我发现您发布的代码存在两个问题。
首先,您指的是输入 JSON 中的“城市”字段,就好像它是一个列表,而实际上它是一个对象。
其次,要处理包含可能缺少某些字段的对象的 JSON,您应该使用 Python 字典get方法。如果未找到该键,则此方法需要一个键和一个可选值(默认为无)。
for item in a:
d = {}
d["AppName"]= item["name"]
d["AppId"] = item["id"]
d["Health"] = item.get("health", "Null")
d["place1"] = item.get("cities", {}).get("place1", "0")
d["place2"] = item.get("cities", {}).get("place2", "0")