Задать вопрос
kolumbou
@kolumbou
python, html, c#

Как вывести значение из json?

Доброго времени суток!
Продолжаю серию глупых вопросов по поводу вывода данных из различных конструкций.
python 3.x

Изначально json уже содержит нечитаемый набор данных.

Есть вот такой набор данных полученный с помощью json.dumps:

{"status": "ok", "blist": true, "users": 
    [{"ver": false, "good": false, "num": 123, "name": "myname", "pic": false, "uname": "myuname", "prv": false, "url": "http://xxx.xxx"},
    {...}],
    "size": 200, "max": "1d2f"
}


Получаю я его через свой api с сайта таким вот способом:

media = json.dumps(api.json)

Необходимо вывести например "num".

Насчет правильности использования dumps заместо load или loads не уверен.
Но с последними у меня всегда какие-то ошибки.
Например при таком случае:

media = json.loads(api.json)

Получается:

the JSON object must be str, not 'dict'

При том как с dumps не получается обратиться к элементам.

string indices must be integers
  • Вопрос задан
  • 20062 просмотра
Подписаться 2 Средний Комментировать
Решения вопроса 1
Tark
@Tark
Pyramid'альный мир
> python, html, c#

Внезапно PHP нет, а с ним было бы проще, ха-ха.

Грубо говоря, json.dumps конвертирует словарь в строку. json.loads конвертирует строку в словарь. Словарь - "ассоциативный массив". Но в вашем словаре ключ users возвращает список (настоящий, неассоциативный массив). Если там есть данные, то после выполнения

media = json.loads(api.json)

к нему можно обратиться с помощью конструкции

media['users'][0]['num']

Где 0 - элемент списка, данные с которого нужно получить. Массивы, ну вы знаете. Не забудьте проверить, есть ли в json ключ users и не нулевой ли длины этот список. Успехов!
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы