पर चुटकुले करता है मेरे पास एक ऐसा एप्लिकेशन है जो एक एएसपी सर्वर पर JSON ऑब्जेक्ट (प्रोटोटाइप के साथ स्वरूपित) भेज रहा है। सर्वर पर, पायथन 2.6 "जेसन" मॉड्यूल जेएसओएन लोड करने की कोशिश करता है, लेकिन यह बैकस्लाश के कुछ संयोजन पर चकित है। निरीक्षण करें:पायथन: json.loads escapes
>>> s
'{"FileExists": true, "Version": "4.3.2.1", "Path": "\\\\host\\dir\\file.exe"}'
>>> tmp = json.loads(s)
Traceback (most recent call last):
File "<interactive input>", line 1, in <module>
{... blah blah blah...}
File "C:\Python26\lib\json\decoder.py", line 155, in JSONString
return scanstring(match.string, match.end(), encoding, strict)
ValueError: Invalid \escape: line 1 column 58 (char 58)
>>> s[55:60]
u'ost\\d'
तो कॉलम 58 बच निकला हुआ बैकस्लैश है। मैंने सोचा कि यह ठीक से बच निकला था! यूएनसी \\host\dir\file.exe
है, इसलिए मैं सिर्फ स्लेश पर दोगुना हो गया। लेकिन जाहिर है यह कोई अच्छा नहीं है। क्या कोई सहायता कर सकता है? आखिरी उपाय के रूप में मैं \ n/और फिर फिर से परिवर्तित करने पर विचार कर रहा हूं, लेकिन यह मेरे लिए असली हैक जैसा लगता है।
अग्रिम धन्यवाद!
:) >>> एस = आर '{ "fileexists" हो सकता है: सच , "संस्करण": "4.3.2.1", "पथ": "\\\\ मेजबान \\ dir \\ file.exe"} ' >>> json.loads (0) {u'FileExists' : सच है, u'Path ': u' \\\\ होस्ट \\ dir \\ file.exe ', u'Version': u'4.3.2.1 '} – Chris
तो वास्तव में क्या कर रहा है? मैं इसे एक स्ट्रिंग पर कैसे लागू कर सकता हूं जो पहले से ही संग्रहीत है, कहें, "foo"। क्या यह किसी प्रकार का एन्कोडिंग है? – Chris
''s =' 'प्रारूपण तोड़ता है। – jfs