Python чтение API с json - PullRequest
       9

Python чтение API с json

0 голосов
/ 15 апреля 2020

Я искал много разных способов чтения json в python, но ни один из них не помог мне. Я хотел бы прочитать http://www.colr.org/json/schemes/random - я использую этот код, чтобы получить его и распечатать:

import requests
from json import *
def getcolor():
    colrjson = requests.get("http://www.colr.org/json/scheme/random")
    thing = colrjson.text
    aaa = loads(thing)
    print(aaa["name"])
getcolor()

И он возвращает:

=================== RESTART: /home/pi/Desktop/test/main.py ===================
Traceback (most recent call last):
  File "/home/pi/Desktop/test/main.py", line 10, in <module>
    getcolor()
  File "/home/pi/Desktop/test/main.py", line 8, in getcolor
    print(aaa["name"])
KeyError: 'name'
>>> 

Если вы посмотрите на то, что json содержит:

{"colors": [], "schemes": [{"timestamp": 1463921041, "colors": ["3f1401", "481f00", "876746", "e6e6e6"], "id": "17375", "tags": [{"id": "13311", "name": "what"}]}], "matching_schemes": ["17375"], "schemes_history": {"17375": [{"d_count": 0, "id": "13311", "a_count": 1, "name": "what"}]}, "success": true, "colors_history": {}, "messages": []}

Часть этого json показывает это:

{"id": "13311", "name": "what"}]}]

Я бы хотел python, чтобы получить "что" ( Какое глупое название для цвета ...) и распечатайте его.

Извините за смешивание цвета и цвета - я пишу свой код на американском английском sh не Briti sh Engli sh, но я пишу вопрос в Briti sh Engli sh.

Это, вероятно, глупая ошибка, я действительно не использовал python json раньше. :)

Ответы [ 3 ]

1 голос
/ 15 апреля 2020

Имя ключа находится внутри не на первом уровне вашего JSON, поэтому для доступа к нему вы должны написать: name = aaa["schemes"][0]["tags"][0]["name"], потому что ключ "themes" и ключ "tags" возвращают массивы.

1 голос
/ 15 апреля 2020

Я только что попробовал исходный URL, предоставленный в моем браузере, и он выдал пустое json без реального содержания: я настроил вашу функцию следующим образом:

import requests
from json import *

def getcolor():
    colrjson = requests.get("http://www.colr.org/json/scheme/random").content
    json_file = loads(colrjson)
    print(json_file["schemes"][0]["tags"][0]["name"])
getcolor()

Здесь "colr json "принимает содержимое файла json, которое затем присваивается переменной" json_file "= load (colr json). Метод «загрузки» из библиотеки json принимает содержимое файла в виде строки, так что вы остаетесь со словарем, который вы затем можете просмотреть, используя ключи и индексы внутренних списков, которые вы предоставили.

Я получил значение как: "Аврора"

1 голос
/ 15 апреля 2020

Если я сделаю

import requests
print(requests.get("http://www.colr.org/json/scheme/random/1").text)

, я получу

'{"colors": [], "schemes": [], "schemes_history": {}, "success": true, "colors_history": {}, "messages": [], "new_scheme_id": "-1"}\n'

Так что ясно, что в словаре нет ключа "name". Вот почему вы получаете эту ошибку.

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