用json_normalize展平嵌套的json

问题描述 投票:0回答:1

我有一个像这样的嵌套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'])

但是输出的前缀如下:'InputRequest.name',我不想要。如何获得一个干净的“名称和号码”列表(以“评论”作为元数据)?

python json pandas normalize
1个回答
0
投票

您可以像这样管理它:

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)
© www.soinside.com 2019 - 2024. All rights reserved.