【问题标题】:TypeError: the JSON object must be str, not 'dict'TypeError:JSON 对象必须是 str,而不是 'dict'
【发布时间】:2017-08-11 11:34:52
【问题描述】:

抱歉,我找不到打印部分 json 响应的令人满意的答案。有人可以在这里帮助我吗:

import json
import requests
import pprint 

response = requests.get('<api endpoing>')
json_data = response.json()
print(json.dumps(json_data, indent=4, sort_keys=True))

Json 响应将是

{
    "Value1": "SomeValue",
    "data": {
        "subval1": false,
        "subval2": "0a4",
        "subval3": "",
        "subval4": "Click h!",
        "subval5": "1002",
        "subval6": "932",
        "subval7": "i2",
        "subval8": 250,
        "subval9": 0,
        "subval10": 1,
        "subval11": 3,
        "subval12": 1,
        "subval13": "<!>",
        "subval14": "",
        "subval15": "Click !!",
        "subval16": "",
        "subval17": 300
    },
    "error": true,
    "message": "Success",
    "status": 200
}

现在,我只想遍历并打印“数据”:值。我会做以下的

data = json.loads(json_data)
data_set = (data['data'])
print(data_set)

但我得到的错误是:TypeError: JSON object must be str, not 'dict'

【问题讨论】:

  • 检查json_data的类型。如果它已经是一个字典,那么不要 json 解码...

标签: python json python-3.x


【解决方案1】:

你不需要json.loads(json_data),因为它已经是一个python dict,你只需要直接输出这个dict。从字典中输出 json 字符串是json.dumps() 的工作:

json.dumps(json_data["data"])

【讨论】:

  • 啊!多谢你们!我应该检查一下类型。学习日。
【解决方案2】:

其实json()方法返回一个json对象,所以你不需要使用json.loads

或者你可以使用

r=requests.get("")
print json.loads(r.content)

JSON Response Content查看更多详情。

【讨论】:

    猜你喜欢
    • 2018-04-26
    • 2019-10-10
    • 1970-01-01
    • 2019-08-27
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-19
    相关资源
    最近更新 更多