Bisher zwei Probleme mit Antworten, wenn beispielsweise eines solche nicht standardmäßige JSON-Streams überträgt. Denn dann muss man möglicherweise eine eingehende Zeichenfolge interpretieren (kein Python-Wörterbuch).
demjson
Problem 1 - : Mit Python 3.7. + Und unter Verwendung von conda konnte ich demjson nicht installieren, da Python> 3.5 derzeit offensichtlich nicht unterstützt wird. Ich brauche also eine Lösung mit einfacheren Mitteln, zum Beispiel ast
und / oderjson.dumps
.
Problem 2 - ast
& json.dumps
: Wenn ein JSON in einfachen Anführungszeichen steht und eine Zeichenfolge in mindestens einem Wert enthält, der wiederum einfache Anführungszeichen enthält, besteht die einzige einfache und dennoch praktische Lösung darin, beide anzuwenden:
Im folgenden Beispiel nehmen wir an, dass line
es sich um das eingehende JSON-Zeichenfolgenobjekt handelt:
>>> line = str({'abc':'008565','name':'xyz','description':'can control TV\'s and more'})
Schritt 1: Konvertieren Sie die eingehende Zeichenfolge mithilfe von ast.literal_eval()
Schritt 2 in ein Wörterbuch. Wenden json.dumps
Sie darauf die zuverlässige Konvertierung von Schlüsseln und Werten an, ohne jedoch den Inhalt von Werten zu berühren :
>>> import ast
>>> import json
>>> print(json.dumps(ast.literal_eval(line)))
{"abc": "008565", "name": "xyz", "description": "can control TV's and more"}
json.dumps
allein würde den Job nicht machen, weil es den JSON nicht interpretiert, sondern nur den String sieht. Ähnliches gilt für ast.literal_eval()
: Obwohl es das JSON (Wörterbuch) korrekt interpretiert, konvertiert es nicht das, was wir brauchen.