Wie zu analysieren etwas falsch JSON mit Python?
Habe ich folgenden JSON-string aus externen input-Quelle:
{value: "82363549923gnyh49c9djl239pjm01223", id: 17893}
Dies ist falsch-formatierten JSON-string ("id" und "Wert" muss in Anführungszeichen eingeschlossen werden), aber ich brauche, um zu analysieren, es auf jeden Fall. Ich habe versucht simplejson und json-py und scheint Sie nicht eingerichtet werden konnte, zu analysieren solcher Zeichenfolgen.
Ich bin mit Python 2.5 auf Google App engine, also eine C-basierte Lösungen wie python-cjson sind nicht anwendbar.
Input-format geändert werden kann, um XML-oder YAML, in adition zu JSON oben aufgeführten, aber ich bin mit JSON in das Projekt und ändern von format in diesem bestimmten Ort wäre nicht sehr gut.
Nun habe ich umgestellt auf XML und dem Parsen der Daten erfolgreich, aber freuen uns auf jede Lösung, die mir erlauben würde, wieder zu wechseln, um JSON.
- Ich bin ein wenig verwirrt darüber, wie Sie wechseln können, um XML -, noch nicht die Kontrolle über die JSON-Daten. Es klingt wie Sie haben eine externe Datenquelle, die im XML-oder JSON-Formate, aber seine JSON-Ausgabe ist dauerhaft gebrochen, wie gezeigt, und Sie können nichts über es nicht tun, so ist nur die option wählen Sie die XML-version statt? Oder bin ich etwas fehlt?
- Sie können analysieren, wie YAML, ohne eine änderung, weil es zu YAML
- Peter, du hast Recht - ich habe eine externe Datenquelle, die ich kontrollieren konnte, nur in einer Weise -, indem Sie sagen: ich will eine Eingabe entweder in JSON, XML oder YAML. Nadia, vielen Dank - das ist mein Fehler (und durch ich bin nicht sehr vertraut mit Stackoverflow-Schnittstelle zu der Zeit).
Du musst angemeldet sein, um einen Kommentar abzugeben.
seit YAML (>=1.2) ist eine Obermenge von JSON, die Sie tun können:
yaml.load(re.sub(r':(.+?)', r': \1', s))
Können Sie demjson.
Könnten Sie einen string-parser, um es zu beheben, zuerst ein regex könnte es tun, vorausgesetzt, dass dies als kompliziert, da das JSON erhalten.
Pyparsing enthält einen JSON-parser-Beispiel ist hier die online-Quelle. Könnten Sie ändern die definition der memberDef zu ermöglichen, eine nicht-zitierte Zeichenfolge für den Namen des members, und dann könnte man diese nutzen, um parser, Ihre nicht-ganz-JSON-Quelltext.
Auf dieser Seite hat auch info und einen link auf meinen Artikel in der August 2008 Ausgabe des Python-Magazins, das viele weitere detaillierte Informationen zu dieser parser. Die Seite zeigt einige Beispiel-JSON -, und code, der greift auf die Ergebnisse analysiert, wie es war, ein Objekt deserialisiert.