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)


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

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.


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

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

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.