2
我想創建一個字符串JSON對象加載使用json
模塊;然而,我有一些麻煩,因爲我的一些值是python True
和False
而不是unicode字符串。例如,我要做到以下幾點:加載特殊值的JSON對象作爲字符串
>>> newDict = json.loads(u'{"firstKey": True, "secondKey": False}')
>>> newDict.get('firstKey') == True
True
,但我發現:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib64/python2.6/json/__init__.py", line 307, in loads
return _default_decoder.decode(s)
File "/usr/lib64/python2.6/json/decoder.py", line 319, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib64/python2.6/json/decoder.py", line 336, in raw_decode
obj, end = self._scanner.iterscan(s, **kw).next()
File "/usr/lib64/python2.6/json/scanner.py", line 55, in iterscan
rval, next_pos = action(m, context)
File "/usr/lib64/python2.6/json/decoder.py", line 185, in JSONObject
raise ValueError(errmsg("Expecting object", s, end))
ValueError: Expecting object: line 1 column 13 (char 13)
,當然,如果我改變True
和False
到"True"
和"False"
,我的條件也不滿足因爲它們現在是字符串,並且將返回False
。
......這是由於JSON代表「JavaScript對象符號」的事實,所以它必須是有效的JavaScript,而不是Python。而JS確實使用'true'和'false'。 – Sergey 2013-02-11 01:19:25
是的,我可以使用'true'和'false'。所以,這兩種方法都有效。 – Aaron 2013-02-11 01:21:40
@Sergey:不管它在JavaScript中如何,它都必須符合JSON規範:http://json.org。當然,JSON是在JavaScript對象文字之後建模的,但它們是兩個獨立的技術。 – 2013-02-11 01:36:36