выровнять вложенный json с помощью json_normalize - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть вложенный 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"
}

Я хочу получить таблицу с именами и номерами, если «Недействительные» не пустые.Я делаю это:

a = json_normalize(data['Invalid'])

, но вывод имеет префиксы, такие как: 'InputRequest.name', который я не хочу.как я могу получить чистый список «имен» и «номеров» (с «комментариями» в качестве метаданных)?

1 Ответ

0 голосов
/ 07 сентября 2018

Вы можете управлять им так:

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)
...