383 Stimmen

Wie man Daten im JSON-Format parst

Mein Projekt empfängt derzeit eine JSON-Nachricht in Python, die ich benötige, um Bits von Informationen aus zu erhalten. Für die Zwecke dieser, lassen Sie uns es auf einige einfache JSON in einer Zeichenfolge festgelegt:

jsonStr = '{"one" : "1", "two" : "2", "three" : "3"}'

Bisher habe ich JSON-Anfragen mit einer Liste generiert und dann json.dumps aber um das Gegenteil zu erreichen, muss ich wohl json.loads . Allerdings hatte ich damit nicht viel Glück. Kann mir jemand ein Snippet zur Verfügung stellen, das Folgendes zurückgibt "2" mit der Eingabe von "two" im obigen Beispiel?

629voto

John Giotta Punkte 15822

Ganz einfach:

import json
data = json.loads('{"one" : "1", "two" : "2", "three" : "3"}')
print(data['two'])  # or `print data['two']` in Python 2

99voto

jisaacstone Punkte 4154

Manchmal ist Ihr json kein String. Zum Beispiel, wenn Sie ein json von einer Url wie diese erhalten:

j = urllib2.urlopen('http://site.com/data.json')

müssen Sie json.load und nicht json.loads verwenden:

j_obj = json.load(j)

(man vergisst leicht: das 's' steht für 'string')

79voto

Für URL oder Datei, verwenden Sie json.load() . Für Zeichenketten mit .json-Inhalt, verwenden Sie json.loads() .

#! /usr/bin/python

import json
# from pprint import pprint

json_file = 'my_cube.json'
cube = '1'

with open(json_file) as json_data:
    data = json.load(json_data)

# pprint(data)

print "Dimension: ", data['cubes'][cube]['dim']
print "Measures:  ", data['cubes'][cube]['meas']

31voto

Venkat Punkte 347

Nachfolgend ein einfaches Beispiel, das Ihnen helfen könnte:

json_string = """
{
    "pk": 1, 
    "fa": "cc.ee", 
    "fb": {
        "fc": "", 
        "fd_id": "12345"
    }
}"""

import json
data = json.loads(json_string)
if data["fa"] == "cc.ee":
    data["fb"]["new_key"] = "cc.ee was present!"

print json.dumps(data)

Die Ausgabe für den obigen Code lautet:

{"pk": 1, "fb": {"new_key": "cc.ee was present!", "fd_id": "12345", 
 "fc": ""}, "fa": "cc.ee"}

Beachten Sie, dass Sie das ident-Argument von dump setzen können, um es so zu drucken (z. B. bei Verwendung von print json.dumps(data , indent=4)):

{
    "pk": 1, 
    "fb": {
        "new_key": "cc.ee was present!", 
        "fd_id": "12345", 
        "fc": ""
    }, 
    "fa": "cc.ee"
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X