Python 3.6 - Разбор ответа JSON с помощью dict внутри dict - PullRequest
0 голосов
/ 28 мая 2018

Меня сводят с ума, потому что я не могу разобрать этот 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 ]

0 голосов
/ 28 мая 2018

Я ценю ответ @kevmo314.

Иногда ваш ответ может содержать начальные и конечные пробелы.Вы можете удалить его, используя strip () .

Примечание: когда вы получаете ответ, в основном вы получаете в виде строки (в некоторых случаях это можетотличаться), которые могут представлять объекты Python, такие как список , словарь и т. д.

Поэтому необходимо преобразовать их обратно в исходную форму перед выполнением каких-либо операций с ними.

Ниже приведен рабочий код.

 import json

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

 funds = response["info"]["funds"]["asset"]["net"]
 print(funds)
0 голосов
/ 28 мая 2018

Вы фактически не анализировали JSON, он просто читается как строка, поэтому response[0] возвращает первый символ строки JSON или {.Для анализа строки JSON,

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

- это шаблон, который вы ожидаете.Более подробную информацию о библиотеке json можно найти здесь .

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