使用特殊值作为字符串加载JSON对象

时间:2013-02-11 01:06:09

标签: javascript python json

我正在尝试使用json模块创建要加载的字符串JSON对象;但是,我遇到了一些麻烦,因为我的一些值是python TrueFalse而不是unicode字符串。例如,我想要执行以下操作:

>>> 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)

当然如果我将TrueFalse更改为"True""False",我的条件就不会得到满足,因为它们现在是字符串而{{1}将被退回。

1 个答案:

答案 0 :(得分:4)

您可以使用小写truefalse吗?

>>> import json
>>> d = {'firstKey': True, 'secondKey': False}
>>> json.dumps(d)
'{"secondKey": false, "firstKey": true}'
>>> s = json.dumps(d)
>>> json.loads(s) == d
True