2012-03-27 6 views
2

Ich habe nur eine Frage bezüglich der Dokumentation von SimpleJSON. Ist es implizit verstanden, dass Funktionen wie .get() verwendet werden können, ohne dass der Autor dies dokumentieren muss? Oder ist es etwas in Bezug darauf, wie Python stattdessen funktioniert, wie SimpleJSON funktioniert, also keine Notwendigkeit, es aufzuschreiben? Ich war wirklich frustriert, als ich in der Dokumentation nicht finden konnte, dass get() verwendet werden könnte.simplejson Dokumentation?

http://simplejson.readthedocs.org/en/latest/index.html

Zum Beispiel folgenden Code

import simplejson as json 
import urllib2 


req = urllib2.Request("http://example.com/someJson") 
opener = urllib2.build_opener() 
f = opener.open(req) 

data = json.load(f) 

print data.get('results') 

ich nicht überall in der Dokumentation zu dieser Funktion finden konnte.

Antwort

3

json.load() deserialisiert Ihr JSON-Dokument und gibt ein Python-Objekt zurück.

Also ich würde sagen, dass data ist ein dict und hier ist die .get() documentation.

Welches Python-Objekt json.load() zurückgibt, hängt von der Eingabe ab, die Sie ihm geben.

Beispiel mit json.loads(), die die gleiche Sache, aber auf Strings:

>>> json.loads('[1, 2, "dog"]') 
[1, 2, 'dog'] 
>>> json.loads('{"animals": ["cat", "dog"], "4": 4}') 
{'animals': ['cat', 'dog'], '4': 4} 
>>> json.loads('"dog"') 
'dog' 

Wie Sie dort sehen eine endlose Anzahl von Möglichkeiten sind (da sie auch verschachtelt werden konnten).

Wenn Sie nicht wissen, das Format der JSON-Datei, die Sie dann analysieren werden, ja, sollten Sie einige Hack zu finden, um ihre Struktur zu verstehen, aber es wäre am besten im Voraus wissen, wie strukturiert ist. Da Sie Ihre Informationen verwenden werden, sollten Sie wahrscheinlich wissen, dass (oder dürfen Sie das wissen).


Ich sehe, dass Sie bereits herausgefunden haben, aber für künftige Ankömmlinge verweisen würde Ich mag darauf hinweisen, dass URL-Anforderungen mit json analysieren man das angeben muss. Wie es Ihnen in this answer hingewiesen wurde.

+0

Danke. Ich denke, ich muss mir angewöhnen, 'type()' zu verwenden, um herauszufinden, was es zurückgibt. – starcorn

+0

Rik Poggi: es sagt nicht wirklich in der Dokumentation, dass es ein 'dict' zurückgibt, also denke ich, dass man in den meisten Fällen' type() 'verwenden muss, um herauszufinden, was eine Funktion in Python zurückgibt? – starcorn

+0

@starcorn: 'json.loads()' wird nicht immer das gleiche Objekt zurückgeben. Wenn Sie nicht wissen, wie es die JSON-Datei strukturiert (in Ihrem Fall Ihre URL-Anfrage), ja, müssen Sie einen Hack verwenden. Ansonsten folge einfach der Struktur. –