Wie dekodiere ich in Python (2.6) JSON zu str und nicht Unicode? [Duplikat]

9

Ich habe eine Konfigurationsdatei in JSON, die ein paar Variablen als Strings enthält (immer ascii). Diese Strings werden standardmäßig zu Unicode dekodiert, aber da ich diese Variablen an meine Python C Extensions weitergeben muss, brauche ich sie als normale Python Strings. Im Moment verwende ich str(unicode) , um die JSON-Strings zu konvertieren, aber eine elegantere und weniger ausführliche Lösung wäre sehr willkommen.

Gibt es eine Möglichkeit, die Standardübersetzung von String in Unicode mit einem benutzerdefinierten JSONDecoder oder Objekt-Hook zu ändern?

    
Adrian 18.01.2011, 11:31
quelle

2 Antworten

1
___ qstnhdr ___ Wie dekodiere ich in Python (2.6) JSON zu str und nicht Unicode? [Duplikat] ___ answer4724121 ___

Sehen Sie, ob die Antworten auf diese Frage Ihnen helfen (in dieser Frage verwendete der Fragesteller json.loads ).

    
___ tag123json ___ JSON (JavaScript Object Notation) ist ein Textdatenaustauschformat und sprachunabhängig. Verwenden Sie dieses Tag, wenn dieses Textformat beteiligt ist. VERWENDEN SIE DIESEN TAG NICHT FÜR NATIVE JAVASCRIPT-OBJEKTE ODER JAVASCRIPT OBJECT LITERALS. Bevor Sie eine Frage stellen, wenn Sie glauben, dass Ihr JSON gültig ist, überprüfen Sie diese bitte in einem JSON-Validator wie JSONLint, damit Ihre Frage beantwortet wird, bevor Sie sie überhaupt stellen. ___ tag123unicode ___ Unicode ist ein Standard für die Kodierung, Darstellung und Handhabung von Text mit der Absicht, alle Zeichen zu unterstützen, die für den geschriebenen Text erforderlich sind und alle Schriftsysteme, technischen Symbole und Interpunktion enthalten. ___ tag123python ___ Python ist eine dynamische und stark typisierte Programmiersprache, die die Usability betont. Zwei ähnliche, aber größtenteils inkompatible Versionen von Python sind weit verbreitet (2 und 3). Wenn Sie eine versionsspezifische Python-Frage haben, sollten Sie die Tags [python-2.7] oder [python-3.x] zusätzlich zum Tag [python] verwenden. Wenn Sie eine Python-Variante wie jython, pypy, iron-python usw. verwenden, kennzeichnen Sie diese bitte entsprechend. ___ qstntxt ___

Ich habe eine Konfigurationsdatei in JSON, die ein paar Variablen als Strings enthält (immer ascii). Diese Strings werden standardmäßig zu Unicode dekodiert, aber da ich diese Variablen an meine Python C Extensions weitergeben muss, brauche ich sie als normale Python Strings. Im Moment verwende ich str , um die JSON-Strings zu konvertieren, aber eine elegantere und weniger ausführliche Lösung wäre sehr willkommen.

Gibt es eine Möglichkeit, die Standardübersetzung von String in Unicode mit einem benutzerdefinierten loads oder Objekt-Hook zu ändern?

    
___ answer4724502 ​​___

Nicht, wenn Sie nicht bereit sind, etwas Geschwindigkeit zu verlieren. Wenn etwas langsamer ist OK, müssen Sie berücksichtigen, dass die Verwendung von plain %code% und die rekursive Konvertierung in %code% wahrscheinlich billiger und vielleicht schneller ist.

Wenn Sie eine %code% brauchen, die Strings schlecht genug zurückgibt , um einen Erweiterungscode zu akzeptieren, der eigentlich nicht gemeint war, dann gibt es hier ein mögliches Ergebnis (meistens durch copy-n-paste) ) das war scheußlich, danke Lennart dafür, dass ich das Licht gesehen habe (dh, du musst nur JSONDecoder und ein paar Tricks erweitern):

%Vor%     
___
TryPyPy 18.01.2011 13:19
quelle
0

Sehen Sie, ob die Antworten auf diese Frage Ihnen helfen (in dieser Frage verwendete der Fragesteller simplejson ).

    
dusan 18.01.2011 12:36
quelle

Tags und Links