Проблема печати ответа JSON для Python - PullRequest
0 голосов
/ 21 февраля 2019

Я использую API для получения идентификатора на основе параметров, переданных из базы данных, приведенный ниже скрипт показывает только часть API.Я прохожу 2 колонны.Если в обоих столбцах есть данные в базе данных, то он попадает в API-1.Если только во 2-м столбце есть данные, то он обращается к API-2 через API-1.Проблема заключается в печати ответа, потому что оба API имеют разную структуру.

Pretty Структура API-1:

"body": { "type1": { "id": id_data, "col1": "col1_data", "col2": "col2_data"} }

Pretty Структура API-2:

"body": { "id": id_data, "col2": "col2_data" }

Код Python: print (resp['body']['type1']['id'], resp['body']['type1']['col1'], resp['body']['type1']['col2'])

Как вы можете видеть, структура отличается и «print» работает, если оба параметра отправляются, но не работает, когдатолько 2-й столбец передается в качестве параметра.

1 Ответ

0 голосов
/ 21 февраля 2019

Создайте принтер, который любезно обрабатывает оба случая:

id_data = "whatever"
data1 = {"body": { "type1": { "id": id_data, "col1": "col1_data", "col2": "col2_data"} }}
data2 = { "body": { "id": id_data, "col2": "col2_data"}}

def printit(d):
    # try to acces d["body"]["type1"] - fallback to d["body"] - store it
    myd = d["body"].get("type1",d["body"])
    did = myd.get("id")      # get id
    col1 = myd.get("col1")   # mabye get col1
    col2 = myd.get("col2")   # get col2

    # print what is surely there, check for those that might miss
    print(did)
    if col1: 
        print(col1)
    print(col2 + "\n") 


printit(data1)
printit(data2)

Вывод:

# data1
whatever
col1_data
col2_data

# data2
whatever
col2_data
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...