我一直在尝试使用JSON来存储程序的设置.我似乎无法使用Python 2.6的JSON解码器来解码多行JSON字符串......
以下是示例输入:
.settings file:
"""
{\
'user':'username',\
'password':'passwd',\
}\
"""
Run Code Online (Sandbox Code Playgroud)
我已经尝试了这个文件的其他一些语法,我将在下面指定(使用它们引起的回溯).
我用于读取文件的python代码是
import json
settings_text = open(".settings", "r").read()
settings = json.loads(settings_text)
Run Code Online (Sandbox Code Playgroud)
Traceback为此:
Traceback (most recent call last):
File "json_test.py", line 4, in <module>
print json.loads(text)
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/json/__init__.py", line 307, in loads
return _default_decoder.decode(s)
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/json/decoder.py", line 322, in decode
raise ValueError(errmsg("Extra data", s, end, len(s)))
ValueError: Extra data: line 1 column 2 - line 7 column 1 (char 2 - 41)
Run Code Online (Sandbox Code Playgroud)
我假设"额外数据"是三重引用.
以下是我为.settings文件尝试的其他语法,以及它们各自的Tracebacks:
"{\
'user':'username',\
'pass':'passwd'\
}"
Traceback (most recent call last):
File "json_test.py", line 4, in <module>
print json.loads(text)
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/json/__init__.py", line 307, in loads
return _default_decoder.decode(s)
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/json/decoder.py", line 319, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/json/decoder.py", line 336, in raw_decode
obj, end = self._scanner.iterscan(s, **kw).next()
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/json/scanner.py", line 55, in iterscan
rval, next_pos = action(m, context)
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/json/decoder.py", line 155, in JSONString
return scanstring(match.string, match.end(), encoding, strict)
ValueError: Invalid \escape: line 1 column 2 (char 2)
'{\
"user":"username",\
"pass":"passwd",\
}'
Traceback (most recent call last):
File "json_test.py", line 4, in <module>
print json.loads(text)
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/json/__init__.py", line 307, in loads
return _default_decoder.decode(s)
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/json/decoder.py", line 319, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/json/decoder.py", line 338, in raw_decode
raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded
Run Code Online (Sandbox Code Playgroud)
如果我将设置全部放在一行上,它会解码很好.
Dan*_*nes 19
摆脱设置文件中的所有反斜杠和所有"Pythonic"引用.如果文件只是:
{
"user":"username",
"password":"passwd"
}
Run Code Online (Sandbox Code Playgroud)
另请注意,JSON字符串引用双引号,而不是单引号.请参阅此处的JSON规范:
| 归档时间: |
|
| 查看次数: |
20591 次 |
| 最近记录: |