• 读取Json BugFix


    遇到的错误如下所示:

    1. 遇到的错误如下所示:
    2. File ~/miniconda3/lib/python3.9/json/decoder.py:353, in JSONDecoder.raw_decode(self, s, idx)
    3. 344 """Decode a JSON document from ``s`` (a ``str`` beginning with
    4. 345 a JSON document) and return a 2-tuple of the Python
    5. 346 representation and the index in ``s`` where the document ended.
    6. (...)
    7. 350
    8. 351 """
    9. 352 try:
    10. --> 353 obj, end = self.scan_once(s, idx)
    11. 354 except StopIteration as err:
    12. 355 raise JSONDecodeError("Expecting value", s, err.value) from None
    13. JSONDecodeError: Expecting property name enclosed in double quotes: line 54022608 column 6 (char 987758592)

    网上查询这个错误是JSon里面的双引号搞成了单引号,故作相应的替换;

    将单引号替换为双引号,下面为相应的代码:

    1. # 导入Python的JSON模块,该模块提供了解析JSON的函数
    2. import json
    3. # 定义要读取的JSON文件的路径
    4. json_path = './example.json'
    5. # 使用with语句打开文件,这样可以确保文件在读取后会被正确关闭
    6. with open(json_path,'r') as f:
    7. # 使用json模块的load函数从文件中读取JSON数据,并将其解析为Python对象
    8. output = json.load(f)
    9. # 使用json模块的dumps函数将Python对象转换为JSON格式的字符串
    10. json_str = json.dumps(output)
    11. # 使用字符串的replace函数将所有的单引号替换为双引号。这一步其实是不必要的,因为json模块在解析和生成JSON时默认使用双引号。
    12. json_str = json_str.replace("'", "\"")
    13. # 再次使用json模块,这次使用loads函数将修改后的JSON字符串重新解析为Python对象
    14. json_obj = json.loads(json_str)
    15. # 使用with语句打开一个新的文件用于写入,这个文件被命名为'replace.json'
    16. with open('./replace.json','w+') as f:
    17. # 使用json模块的dump函数将Python对象写入文件,参数indent设置为2表示生成的JSON数据将采用缩进格式,便于阅读
    18. json.dump(json_obj, fp=f, indent=2)

    水平有限,有问题随时交流~ 

  • 相关阅读:
    应用层-HTTP协议
    Linux管道的工作过程
    tomcat9 zip包 安装
    深入路由器交换数据传输
    Unity - Alpha Is Transparency
    【Jenkins】关于账号,证书验证的设置问题
    42. 【Android教程】活动:Activity
    kubectl 命令行管理K8S(上)
    Choreographer
    RK3399 Android7.1修改adb shell下$前的提示名称
  • 原文地址:https://blog.csdn.net/yiqiedouhao11/article/details/134448585