2017-02-06 2 views
3

Я работаю с Python API Rest между Django и LogicalDOC. Я хочу, чтобы отобразить список каталогов в одном каталоге, которые имеют этот родительский ID: 8552450API Rest Python

Я использую эту документацию: http://wiki.logicaldoc.com/rest/#/

Так что я эту команду:

url = 'http://demoged.fr:8009/services/rest/folder/listChildren?folderId=8552450' 
payload = {'folderId': 8552450} 

headers = {'Accept': 'application/json'} 
r = requests.get(url, params=payload, headers=headers, auth=('***', '***')) 

rbody = r.content 
print rbody 

И я получаю:

[{"id":8978437,"name":"LKJLKJ_OKJKJ_1900-09-12","parentId":8552450,"description":"","lastModified":"2017-02-06 14:45:40 +0100","type":0,"templateId":null,"templateLocked":0,"creation":"2017-02-06 14:45:40 +0100","creator":"Etat Civil","position":1,"hidden":0,"foldRef":null,"attributes":[],"storage":null,"tags":[]}] 

Тогда, я просто хочу, чтобы получить name результат:

LKJLKJ_OKJKJ_1900-09-12 

Так что я попробовал 2 вещи:

print rbody["name"] 
print rbody[1] 

Но это не работает. У вас есть идея о команде, которую я должен написать?

Спасибо

ответ

3

Учитывая ваш rbody результат было бы

rbody[0]['name'] 

Однако если rbody является строкой, то вам нужно сначала превратить его в объект Python

>>> import json 
>>> s = '''[{"id":8978437,"name":"LKJLKJ_OKJKJ_1900-09-12","parentId":8552450,"description":"","lastModified":"2017-02-06 14:45:40 +0100","type":0,"templateId":null,"templateLocked":0,"creation":"2017-02-06 14:45:40 +0100","creator":"Etat Civil","position":1,"hidden":0,"foldRef":null,"attributes":[],"storage":null,"tags":[]}]''' 
>>> json.loads(s)[0]['name'] 
'LKJLKJ_OKJKJ_1900-09-12' 

Если у вас в вашем списке есть несколько словарей, вы можете использовать понимание списка

names = [i['name'] for i in json.loads(rbody)] 
+0

спасибо. '[0]' соответствует тому, что именно? – Deadpool

+0

Я получаю эту ошибку: 'Исключительное значение: \t Строковые индексы должны быть целыми числами, а не str' – Deadpool

+1

@Valentin У вас есть« список »с одним« dict »внутри. '[0]' индексирует первый элемент 'list', тогда' ['name'] 'индексирует элемент' dict' этим ключом. – CoryKramer

2

Возвращаемое значение вашего кода - это список с одним словарем. Он будет работать так:

print rbody[0]["name"] 

Это сообщение об ошибке означает, что значение rbody имеет строковый тип. Если вы хотите получить доступ к объекту словаря, вам необходимо декодировать значение типа строки следующим образом:

import json 
rbody = json.loads(rbody) 

Наслаждайтесь!

+0

Кажется, что это не работает: 'Исключительное значение: \t Строковые индексы должны быть целыми, а не str' – Deadpool

-1

печати rbody [0] [1] Я надеюсь, что эта помощь