尽管下面的字符串看起来是有效的json字符串,但我无法对其进行json.load
。
In [33]: mystr="{ 'username': 'Newman Test Executor', 'channel': '#someslackchannel' }"
In [34]: json.loads(mystr)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-34-6f4efa0d20c6> in <module>()
----> 1 json.loads(mystr)
/usr/lib/python2.7/json/__init__.pyc in loads(s, encoding, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)
337 parse_int is None and parse_float is None and
338 parse_constant is None and object_pairs_hook is None and not kw):
--> 339 return _default_decoder.decode(s)
340 if cls is None:
341 cls = JSONDecoder
/usr/lib/python2.7/json/decoder.pyc in decode(self, s, _w)
362
363 """
--> 364 obj, end = self.raw_decode(s, idx=_w(s, 0).end())
365 end = _w(s, end).end()
366 if end != len(s):
/usr/lib/python2.7/json/decoder.pyc in raw_decode(self, s, idx)
378 """
379 try:
--> 380 obj, end = self.scan_once(s, idx)
381 except StopIteration:
382 raise ValueError("No JSON object could be decoded")
ValueError: Expecting property name: line 1 column 3 (char 2)
4条答案
按热度按时间yzckvree1#
正如上面提到的@Austin和@Arya一样,JSON字符串中需要有双引号才有效。在本例中,只需将单引号替换为双引号即可:
mzsu5hc02#
输出:
外有单引号,内有双引号(如果是字符串)。
如果您无法控制传递给您的
json string
,可以使用**Vasilis G.**提到的mystr.replace('\'', '"')
。hk8txs483#
JSON字符串中需要双引号。
参见Parsing string as JSON with single quotes?
JSON标准要求双引号,不接受单引号,解析器也不接受。
5q4ezhmt4#
按照Arya的评论,并得到了代码的工作。答案可以在另一个论坛找到虽然。