首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python的JSON响应打印问题

Python的JSON响应打印问题
EN

Stack Overflow用户
提问于 2019-02-21 06:04:58
回答 1查看 18关注 0票数 0

我正在点击一个API,以获取基于从数据库传递的参数的ID,下面的脚本只显示了API部分。我通过了2列。如果这两列在数据库中都有数据,则命中API-1。如果只有第二列有数据,那么它通过API-1命中API-2。问题出在打印响应上,因为两个API具有不同的结构。

API-1的漂亮结构:

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

API-2的漂亮结构:

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

Python代码:print (resp['body']['type1']['id'], resp['body']['type1']['col1'], resp['body']['type1']['col2'])

正如你所看到的,结构是不同的,如果两个参数都被发送了,'print‘就可以工作,但当只有第二列作为参数发送时,它就失败了。

EN

回答 1

Stack Overflow用户

发布于 2019-02-21 06:26:21

创建一个能够很好地处理这两种情况的打印机:

代码语言:javascript
运行
复制
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)

输出:

代码语言:javascript
运行
复制
# data1
whatever
col1_data
col2_data

# data2
whatever
col2_data
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54795955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档