Abrufen von Werten aus JSON mithilfe von Python

70

Beim Versuch, Werte aus der JSON-Zeichenfolge abzurufen, wird ein Fehler angezeigt:

data = json.loads('{"lat":444, "lon":555}')
return data["lat"]

Wenn ich jedoch über die Daten iteriere, erhalte ich die Elemente ( latund lon), aber nicht die Werte:

data = json.loads('{"lat":444, "lon":555}')
    ret = ''
    for j in data:
        ret = ret + ' ' + j
return ret

Welches kehrt zurück: lat lon

Was muss ich tun, um die Werte von latund zu erhalten lon? ( 444und 555)

BrunoVillanova
quelle
4
Ihr erstes Beispiel funktioniert für mich. Was ist der Fehler, den es Ihnen gibt?
mgilson
1
(nicht verwandt), Ihre zweite Schleife kann geschrieben werden als' '.join(data)
mgilson
Wenn ich GAE mit Python 2.7 und Bottle verwende, erhalte ich "INFO 2012-09-10 13: 54: 58,583 dev_appserver.py:2967]" POST / app / 939393 / position HTTP / 1.1 "500 -" auf der GAE-Protokollkonsole
BrunoVillanova
Fehler-Traceback könnte hier nützlich sein, da der Code im ersten Teil in Ordnung ist. Es kann keinen Fehler im Zusammenhang mit der Frage
auslösen

Antworten:

99

Wenn Sie sowohl Schlüssel als auch Werte des Wörterbuchs durchlaufen möchten, gehen Sie folgendermaßen vor:

for key, value in data.items():
    print key, value
Lior
quelle
63

Welchen Fehler gibt es Ihnen?

Wenn Sie genau das tun:

data = json.loads('{"lat":444, "lon":555}')

Dann:

data['lat']

SOLLTE KEINEN Fehler geben.

Pablo Santa Cruz
quelle
12

Verwenden von Python zum Extrahieren eines Werts aus dem bereitgestellten Json

Working sample:-

import json
import sys

//load the data into an element
data={"test1" : "1", "test2" : "2", "test3" : "3"}

//dumps the json object into an element
json_str = json.dumps(data)

//load the json to a string
resp = json.loads(json_str)

//print the resp
print (resp)

//extract an element in the response
print (resp['test1'])
Sireesh Yarlagadda
quelle
6

Es gibt eine Py-Bibliothek mit einem Modul, das den Zugriff auf Json-ähnliche Wörterbuchschlüsselwerte als Attribute erleichtert: https://github.com/asuiu/pyxtension Sie können es verwenden als:

j = Json('{"lat":444, "lon":555}')
j.lat + ' ' + j.lon
asu
quelle
5

Mit Ihrem Code würde ich das so machen. Ich weiß, dass eine Antwort gewählt wurde, die nur zusätzliche Optionen bietet.

data = json.loads('{"lat":444, "lon":555}')
    ret = ''
    for j in data:
        ret = ret+" "+data[j]
return ret

Wenn Sie in diesem Herrenhaus für verwenden, erhalten Sie den Schlüssel des Objekts, nicht den Wert, sodass Sie den Wert erhalten können, indem Sie den Schlüssel als Index verwenden.

Destreyf
quelle