Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 解析缺少字段的JSON_Python_Json - Fatal编程技术网

Python 解析缺少字段的JSON

Python 解析缺少字段的JSON,python,json,Python,Json,我有一个带有动态字段的json数组,其中一些数组没有包含所有字段。 例如: [ { "Name": "AFG LIMITED", "Vendor ID": "008343", "EGID": "67888", "FID": "83748374" }, {

我有一个带有动态字段的json数组,其中一些数组没有包含所有字段。 例如:

[ 
{
      "Name": "AFG LIMITED",
        "Vendor ID": "008343",
        "EGID": "67888",
         "FID": "83748374"
     },
{
        "Name": "ABC LIMITED",
        "Vendor ID": "008333",
        "EGID": "67888",
        "AID": "0000292"
         "FID": "98979"
    },
    ]
我需要提取带有标题和管道分隔符的特定键,如:Name | Vendor ID | EGID | AID(仅存在于第二个数组中)。如果任何键不存在,那么它应该具有空值 我试着用下面的代码来解析这个,但是它在第二行中断了,因为援助丢失了

import json

with open("sample.json", "r") as rf:
    decoded_data = json.load(rf)

# Check is the json object was loaded correctly
try:
    for i in decoded_data:
      print i["Name"],"|",i["Vendor ID"]"|",i["EGID"],"|",i["AId"]
       
except KeyError:
    print(null)
上述代码的输出:
AFG LIMITED | 008343 | 67888 | null

i.get(key,default_值)
谢谢,但它打印相同的代码时出现以下错误:print i.get([“Name”],“),”,i.get([“Vendor ID”],“),“|”,i.get([“EGID”,“,”,“),“,”,i.get([“AId”,”)TypeError:unhable类型:'list'@raviar
key参数应为字符串,e>
而不是
[“Name”]
。您不需要添加方括号,因为您调用的是一个方法,而不是使用方括号操作符进行查找。
TypeError
是Python将方括号解释为列表的结果,不允许将列表作为键,因为列表不能散列。谢谢,我将其改为字符串并进行了处理,但我想知道如何打印与打印相同的标题,请提出建议。@RaviKumar只需将默认值设置为
“null”
而不是空字符串(例如,
i.get(“Name”,“null”)
),不存在的字段将在输出中具有“null”值。