2016-07-12 2 views
1

Когда у вас есть ответ JSON, который содержит несколько объектов JSON, как вы вытаскиваете конкретный объект в JSON с помощью Python?Прочитать конкретный объект JSON из ответа в Python

Например, со следующим ответом JSON у меня есть три объекта.

{ 
"_links": { 
    "base": "REDACTED", 
    "context": "", 
    "self": "REDACTED" 
}, 
"limit": 20, 
"results": [ 
    { 
     "_expandable": { 
      "ancestors": "", 
      "body": "", 
      "children": "", 
      "container": "", 
      "descendants": "", 
      "extensions": "", 
      "history": "/rest/api/content/198121503/history", 
      "metadata": "", 
      "operations": "", 
      "space": "/rest/api/space/ReleaseNotes", 
      "version": "" 
     }, 
     "_links": { 
      "self": "REDACTED", 
      "tinyui": "/x/HxjPCw", 
      "webui": "UNIQUE_URL_HERE" 
     }, 
     "id": "198121503", 
     "status": "current", 
     "title": "Unique Title of Content", 
     "type": "page" 
    }, 
    { 
     "_expandable": { 
      "ancestors": "", 
      "body": "", 
      "children": "", 
      "container": "", 
      "descendants": "", 
      "extensions": "", 
      "history": "/rest/api/content/197195923/history", 
      "metadata": "", 
      "operations": "", 
      "space": "/rest/api/space/ReleaseNotes", 
      "version": "" 
     }, 
     "_links": { 
      "self": "REDACTED", 
      "tinyui": "/x/k-jACw", 
      "webui": "UNIQUE_URL_HERE" 
     }, 
     "id": "197195923", 
     "status": "current", 
     "title": "Unique Title of Content", 
     "type": "page" 
    }, 
    { 
     "_expandable": { 
      "ancestors": "", 
      "body": "", 
      "children": "", 
      "container": "", 
      "descendants": "", 
      "extensions": "", 
      "history": "/rest/api/content/198121203/history", 
      "metadata": "", 
      "operations": "", 
      "space": "/rest/api/space/ReleaseNotes", 
      "version": "" 
     }, 
     "_links": { 
      "self": "REDACTED", 
      "tinyui": "/x/8xbPCw", 
      "webui": "UNIQUE_URL_HERE" 
     }, 
     "id": "198121203", 
     "status": "current", 
     "title": "Unique Title of Content", 
     "type": "page" 
    } 
], 
"size": 3, 
"start": 0 

}

Как я могу получить идентификатор и название для конкретного объекта в ответ?

Я читал в других тонах, что, когда вы используете json.loads(your_json), он становится словарем. Если это так, как мне тянуть эти данные, если они хранятся в словаре?

Update

Позвольте мне пояснить, что, может быть, я не вижу, или объяснить это ясно.

Единственный вариант, чтобы пройти через все? Невозможно сказать, что я получил второй объект JSON и вернул идентификатор и название? Если это так, почему бы мне не создать пользовательский объект, сохраните элементы, которые я хочу от каждого объекта JSON, в объекты внутри массива, тогда я могу получить доступ к каждому объекту в массиве?

+0

Я действительно не знаю, кто plussed это, но ваш вопрос, «Как я могу получить доступ вещи из' dict'? " Это * основная * информация, которую будет охватывать любое стандартное введение Python. – jpmc26

ответ

1

После преобразования ответа на json вы можете просто использовать ключевые атрибуты.

for result in data['results']: 
    print("id: {}, title: {}".format(result['id'], result['title'])) 

Как вы упомянули, вы можете использовать json.load для преобразования строки в словарь. Но если вы используете библиотеку requests, просто используйте response.json для получения данных в требуемом формате.

0

Использовать нотацию с помощью скобок для доступа к ключам после загрузки строки в объект json. Петля через ключ результатов, пока вы не найдете нужный вам объект, так же, как это:

j = json.loads(your_json) 

for r in j["results"]: 
    if r["title"] == "Something": 
     print(r["id"]) 
     print(r["title"]) 
+2

Это не то, как словари работают в python. –

+0

Chill bro Я еще не очистил его. Этот код работает, я тестировал его. – CamJohnson26

Смежные вопросы