首页 > 解决方案 > 如何使用户需要 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"
                }

        }

]

标签: python-2.7

解决方案


我发现您发布的代码存在两个问题。

首先,您指的是输入 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")

推荐阅读