美文网首页
json解析报错 Expecting property name

json解析报错 Expecting property name

作者: 隐墨留白 | 来源:发表于2021-01-28 10:57 被阅读0次

    工作时遇到字符串

    "{'kw': None, 'end_date': None, 'crawl_time': 30, 'isdel': False}"
    

    本来想用json.loads()转换为字典,但是报错了:

    Traceback (most recent call last):
      File "C:/Users/wode/Desktop/test/3.py", line 7, in <module>
        c = json.loads(b)
      File "D:\Python36\lib\json\__init__.py", line 354, in loads
        return _default_decoder.decode(s)
      File "D:\Python36\lib\json\decoder.py", line 339, in decode
        obj, end = self.raw_decode(s, idx=_w(s, 0).end())
      File "D:\Python36\lib\json\decoder.py", line 355, in raw_decode
        obj, end = self.scan_once(s, idx)
    json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
    

    如何才能将字符串转换为字典呢,其实方法很简单,使用eval()方法就可以了。

    这是什么原因呢:

    1.jpg

    从图中可以看到,

    1. 正常的json字符串应该是单引号里面包含双引号,而双引号包含单引号的字符串就不是正常的json数据。
    2. json数据中的false与true首字母都是小写,且空值为null,python的空值为None。
    3. eval会直接将字符串转换为字典,内容不变。

    尝试了一下,不管是字典字符串还是列表字符串,如果外面是双引号,里面是单引号,都必须使用eval(),才能转换为正常的字典或者是列表。

    json.loads与eval都能将s转成python中的对象,json.loads将json中的字符串转成unicode(types.UnicodeType),eval转成了str(types.StringType)

    相关文章

      网友评论

          本文标题:json解析报错 Expecting property name

          本文链接:https://www.haomeiwen.com/subject/pprttltx.html