2017-02-06 3 views
3

Ich arbeite mit Python API Rest zwischen Django und LogicalDOC. Ich möchte innerhalb einer Verzeichnisliste der Verzeichnisse angezeigt werden, die diese Eltern ID haben: 8552450API Rest Python

ich diese Dokumentation bin mit: http://wiki.logicaldoc.com/rest/#/

So habe ich diesen Befehl ein:

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 

Und ich bekomme:

[{"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":[]}] 

Dann, ich will nur name Ergebnis erhalten:

012.351.
LKJLKJ_OKJKJ_1900-09-12 

Also versuchte ich 2 Dinge:

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

Aber es funktioniert nicht. Hast du eine Idee über den Befehl, den ich schreiben muss?

Danke

Antwort

3

Angesichts Ihrer rbody Ergebnis wäre es

rbody[0]['name'] 

jedoch sein, wenn rbody ein String ist, müssen Sie zuerst in ein Objekt Python drehen

>>> 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' 

Wenn Sie Haben Sie mehrere Wörterbücher in Ihrer Liste, können Sie ein Listenverständnis verwenden

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

Danke. '[0]' entspricht was genau? – Deadpool

+0

Ich bekomme diesen Fehler: 'Exception Value: \t String-Indizes müssen Ganzzahlen sein, nicht str' – Deadpool

+1

@Valentin Sie haben eine' liste' mit einem einzigen 'dict' innerhalb. '[0]' indiziert das erste Element der 'liste', dann' ['name'] 'indexiert das' dict' Element mit dieser Taste. – CoryKramer

2

Der Rückgabewert Ihres Codes ist eine Liste mit einem Wörterbuch. Es wird wie folgt funktionieren:

print rbody[0]["name"] 

Diese Fehlermeldung bedeutet, dass der Wert von rbody eines String-Typ ist. Wenn Sie auf das Dictionary-Objekt zugreifen möchten, müssen Sie den String-Typ-Wert wie folgt decodieren:

Genießen Sie!

+0

Es scheint nicht zu funktionieren: 'Exception-Wert: \t String-Indizes müssen Ganzzahlen, nicht str sein – Deadpool

-1

Druck rbody [0] [1] Ich hoffe, diese Hilfe