Python 3.6 - 解析包含字典的字典的json响应

3

我因为无法解析这个json响应而感到疯狂。我尝试了许多不同的方法,但没有一个能正常工作...你能帮帮我吗? 这是我正在解析的文件:

{
    "info": {
        "funds": {
            "asset": {
                "net": "12516.000",
                "total": "0"
            },
            "borrow": {
                "btc": "0",
                "cny": "0",
                "ltc": "0"
            },
            "free": {
                "btc": "0",
                "cny": "0",
                "ltc": "0",
                "eth": "0"
            },
            "freezed": {
                "btc": "0",
                "cny": "0",
                "ltc": "0",
                "eth": "0"

            },
            "union_fund": {
                "btc": "0",
                "ltc": "0"
            }
        }
    },
    "result": true
}

我只想要类似这样的东西:
#What I want to get the "net" which is "12516.000", so I tried this:
funds = response['info']['funds']['asset']['net']

funds = response[0] 返回 { 作为答案,而 funds = response[1] 给我返回 r 作为响应,最后,如果我尝试使用 funds = response['info'],我会得到这个类型错误:TypeError: string indices must be integers

2个回答

2

您实际上还没有解析JSON,它只是被读取为字符串,因此response [0]返回JSON字符串的第一个字符,即{。要解析JSON字符串,

import json
json.loads(response)['info']['funds']['asset']['net']

这是您期望的模式。有关json库的更多详细信息,请参见此处


1

我感谢@kevmo314的回答。

有时候你的回复可能包含前导和尾随的空格。你可以使用strip()去掉它。

注意:当你获得响应时,基本上你会得到一个字符串(在某些情况下可能不同),它可以表示Python对象,如列表字典等。

因此,在对它们进行任何操作之前,将它们转换回其原始形式是必要的。

以下是可行的代码。

 import json

 response = response.strip()
 response = json.loads(response)

 funds = response["info"]["funds"]["asset"]["net"]
 print(funds)

1
现在我明白了...知道如何做比仅仅去做要好,真的很感激,所以谢谢!运行得非常完美。 - Vitor Alves
感谢@Victor。json模块真的很好用。我太喜欢它了。享受编程吧。 - hygull

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接