用json\u normalize展平嵌套的json

2024-05-14 22:34:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个嵌套的json,如下所示:

{  
  "Invalids":[  
  {  
     "Comments":"string",
     "InputRequest":{  
        "LinesInfo":[  
           {  
              "LastPipeLineStateIds":[  
                 0
              ],
              "CropId":0
           }
        ],
        "Crop":"string",
        "Year":"string"
     }
  },
  {  
     "Comments":"string",
     "InputRequest":{  
        "LinesInfo":[  
           {  
              "LastPipeLineStateIds":[  
                 0
              ],
              "CropId":0
           }
        ],
        "name":"string",
        "number":"string"
     }
  }
],
"LinesResponse":{  },
"ErrorInfo":"string"
}

如果“Invalids”不是空的,我想得到一个包含“name”和“number”的表。我是这样做的:

a = json_normalize(data['Invalid'])

但是输出有如下前缀:'输入请求名称我不想要。如何获得“name”和“number”的干净列表(以“comments”作为元数据)?你知道吗


Tags: namecropjsonnumberstringyearcommentsnormalize
1条回答
网友
1楼 · 发布于 2024-05-14 22:34:09

你可以这样管理它:

nested_json = {  
    "Invalids": [  
        ...
     ]
}

def get_names_and_numbers(json_data):
    """
    Return names and numbers in json_data.
    """
    names_list = []
    numbers_list= []

    Invalids = nested_json['Invalids']
    if Invalids: # *note that Invalids is a list an this referers to its lenght*
        names_list.append(Invalids[1]['InputRequest']['name'])
        numbers_list.append(Invalids[1]['InputRequest']['number'])
        return names_list, numbers_list
    else:
         return None, None

names, numbers = get_names_and_numbers(nested_json)

相关问题 更多 >

    热门问题