Kann json.Lasten ignorieren trailing Kommas?
Wie bereits in diese StackOverflow-Frage, Sie sind nicht erlaubt, jede abschließende Kommas im json-Format. Zum Beispiel, diese
{
"key1": "value1",
"key2": "value2"
}
ist in Ordnung, aber dieser
{
"key1": "value1",
"key2": "value2",
}
ist ungültige syntax.
Gründen, erwähnt in diese anderen StackOverflow-Frage, ein endendes Komma legal ist (und vielleicht aufgefordert zu werden?) in Python-code. Ich arbeite sowohl mit Python und JSON, also ich würde gerne in der Lage sein werden, die konsistent über beide Arten von Dateien. Gibt es eine Möglichkeit zu haben json.loads
ignorieren trailing Kommas?
- In kurzen, Nein. Die best practices oder die bevorzugten Ansätze für eine Sprache keine Rolle für die besten Praktiken in einem anderen.
- In JSON ist, ist es ungültig, also Nein, der JSON-parser wird berichten, dass ein ungültiges format (korrekt Verhalten!). Wenn es ein Python-dictionary, könnte man analysieren, es mit
ast.literal_eval
. - Ich denke nicht so. Das json-Modul entspricht dem standard. Sie könnten in der Lage sein, zu hacken Ihre eigene version, obwohl.
- "Ich bin im Umgang mit Python und JSON, also ich würde gerne in der Lage sein werden, die konsistent über beide Arten von Dateien" - eine Art von JSON-Datei ist. Was ist der andere? Python-Module?
print
ed Python-Datenstrukturen? - Das zweite Beispiel, das Sie Gaben nicht JSON, aber es ist HOCON. github.com/typesafehub/config/blob/master/HOCON.md Art von macht mich wollen, schreiben Sie einen parser für python...
- Hmmm, NÖ. Magermilch die spec definiert control-Zeichen als aus der JSON-Spezifikation (große Dose " \/Würmer/ ^I ^H "). Es wird auch nicht akzeptieren, die Ziffern, beginnend mit einem dezimalen (also javascript-Deklarationen wie
{number: .75, number2: .1E2}
wäre ungültig. Es beschäftigt#
und//
für Kommentare, bietet aber keine/* block comment method */
. Andere als das, es ist genial. - Mögliche Duplikate von Parsing "JSON" mit nachgestellten Kommas
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie die wrap-python-json-parser, mit jsoncomment
Beispiel:
,}
oder,]
und den Kommas wird magisch verschwinden.{"key1": "{my special value,}"}
.Streifen die Kommas, bevor Sie übergeben Sie den Wert in.
'{"foo": ",}"}'
.", }"
bekommen würde entstellt.',\s*}'
und',\s*]'
. Dann wieder, diese Methode mangles strings wnich schlecht ist. Die JsonComment Paket ist nicht viel besser, als dass es nutzt eine Methode, die ähnlich wie diese.{"key1": "{my special value, }"}
(tio demo). Sie nicht stellen Sie Vermutungen über den Inhalt komplexer Formate wie JSON. Es ist immer eine schlechte Idee. Nur tun Sie es nicht. Verwenden Sie ein ordnungsgemäß getestet parser und sparen Sie sich das Sodbrennen.string
ist ein standard-Modul.s
wäre eine bessere Variablennamen.In python können Sie nachgestellten Kommas innerhalb von Wörterbüchern und-Listen, also sollten wir in der Lage sein, dies zu nutzen mit ast.literal_eval:
Jedoch, JSON ist nicht genau python so gibt es ein paar Sonderfälle zu diesem. Zum Beispiel Werte wie null, true, false nicht existieren in python. Wir ersetzen die mit gültigen python-äquivalente, bevor wir laufen die eval:
Diese wird leider mangle alle Zeichenketten, die Worte null, true oder false in Ihnen.
werden würde