485 Stimmen

JSON-String mit Python in Diktat umwandeln

Ich bin ein wenig verwirrt mit JSON in Python. Für mich sieht es wie ein Wörterbuch aus, und aus diesem Grund versuche ich, das zu tun:

{
    "glossary":
    {
        "title": "example glossary",
        "GlossDiv":
        {
            "title": "S",
            "GlossList":
            {
                "GlossEntry":
                {
                    "ID": "SGML",
                    "SortAs": "SGML",
                    "GlossTerm": "Standard Generalized Markup Language",
                    "Acronym": "SGML",
                    "Abbrev": "ISO 8879:1986",
                    "GlossDef":
                    {
                        "para": "A meta-markup language, used to create markup languages such as DocBook.",
                        "GlossSeeAlso": ["GML", "XML"]
                    },
                    "GlossSee": "markup"
                }
            }
        }
    }
}

Aber wenn ich es tue print(dict(json)) erhalte ich eine Fehlermeldung.

Wie kann ich diese Zeichenkette in eine Struktur umwandeln und dann die json["title"] zu erhalten "example glossary" ?

850voto

Ignacio Vazquez-Abrams Punkte 735200

json.loads()

import json

d = json.loads(j)
print d['glossary']['title']

118voto

Hussain Punkte 4689

Als ich anfing, json zu verwenden, war ich einige Zeit lang verwirrt und unfähig, es zu verstehen, aber schließlich bekam ich, was ich wollte
Hier ist die einfache Lösung

import json
m = {'id': 2, 'name': 'hussain'}
n = json.dumps(m)
o = json.loads(n)
print(o['id'], o['name'])

25voto

kakhkAtion Punkte 2134

Wenn Sie der Datenquelle vertrauen, können Sie eval um Ihre Zeichenkette in ein Wörterbuch zu konvertieren:

eval(your_json_format_string)

Exemple :

>>> x = "{'a' : 1, 'b' : True, 'c' : 'C'}"
>>> y = eval(x)

>>> print x
{'a' : 1, 'b' : True, 'c' : 'C'}
>>> print y
{'a': 1, 'c': 'C', 'b': True}

>>> print type(x), type(y)
<type 'str'> <type 'dict'>

>>> print y['a'], type(y['a'])
1 <type 'int'>

>>> print y['a'], type(y['b'])
1 <type 'bool'>

>>> print y['a'], type(y['c'])
1 <type 'str'>

22voto

jassinm Punkte 6923

Simplejson oder cjson für Geschwindigkeitssteigerungen verwenden

import simplejson as json

json.loads(obj)

or 

cjson.decode(obj)

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