如何使用户需要的JSON

时间:2018-12-20 10:51:29

标签: python-2.7

我有一个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"
                }

        }

]

1 个答案:

答案 0 :(得分:0)

我看到您发布的代码有两个问题。

首先,您在输入JSON时引用了“城市”字段,就好像它实际上是一个对象时一样,是一个列表。

第二,要处理包含可能缺少某些字段的对象的JSON,应使用Python字典get方法。此方法需要一个密钥和一个可选值,如果找不到该密钥,则返回该值(默认为None)。

>>> (l * [[1], [2], [4]]).flatten()
array([ 3,  4,  5,  6,  7,  6,  8, 10, 12, 14, 12, 16, 20, 24, 28])