• json模块使用总结——Python


    # 原创文章,未经允许请勿转载

    通过Python的json模块,可以将字符串形式的json数据转化为字典,也可以将Python中的字典数据转化为字符串形式的json数据。

    之前使用这个模块时,都是随用随查,浅尝辄止,对模块的功能了解不深。

    随着使用次数的增加,我对这个功能完善的模块有了更多的了解,记录如下。

    1、json字符串转为字典

    json.load / json.loads

    两个方法功能类似,可选参数也相同,最大的区别在于,json.load方法接受的输入,即第一个参数,是包含json数据的文件对象,如open方法的返回对象,

    json.loads接受的输入是json字符串,而非文件对象。从输入类型的区别也可以看出两者的使用场合。

    可选参数包括是否需要转换整型、浮点型等数值的参数,还有一些复杂的功能,暂时没有用到,以后有机会再了解。

    2、字典转换为json

    json.dump / json.dumps

    对应于load和loads,dump的第一个参数是对象字典,第二个参数是文件对象,可以直接将转换后的json数据写入文件,dumps的第一个参数是对象字典,其余都是可选参数。dump和dumps的可选参数相同,这些参数都相当实用,现将用到的参数记录如下:

    ensure_ascii 默认为True,保证转换后的json字符串中全部是ascii字符,非ascii字符都会被转义。如果数据中存在中文或其他非ascii字符,最好将ensure_ascii设置为False,保证输出结果正常。

    indent 缩进,默认为None,没有缩进,设置为正整数时,输出的格式将按照indent指定的半角空格数缩进,相当实用。

    separators 设置分隔符,默认的分隔符是(',', ': '),如果需要自定义json中的分隔符,例如调整冒号前后的空格数,可以按照(item_separator, key_separator)的形式设置。

    sort_keys 默认为False,设为True时,输出结果将按照字典中的key排序。

     1 >>> import json
     2 >>> a = {}
     3 >>> a['1'] = 2
     4 >>> a['ad'] = 'ertwer'
     5 >>> a['02'] = 'oierte'
     6 >>> a[2] = [1, 'a']
     7 >>> a['non_ascii'] = "青团 》 熊猫 ?"
     8 >>> a['ss'] = a.copy()
     9 >>> print(json.dumps(a))  # 默认参数输出,无缩进,中文字符都被转义
    10 {"2": [1, "a"], "02": "oierte", "ss": {"ad": "ertwer", "2": [1, "a"], "02": "oierte", "1": 2, "non_ascii": "u9752u56e2 u300b u718au732b uff1f"}, "1": 2, "ad": "ertwer", "non_ascii": "u9752u56e2 u300b u718au732b uff1f"}
    11 >>> 
    12 >>> print(json.dumps(a, ensure_ascii=False, indent=4))  # 四空格缩进,中文字符全部正常
    13 {
    14     "2": [
    15         1,
    16         "a"
    17     ],
    18     "02": "oierte",
    19     "ss": {
    20         "ad": "ertwer",
    21         "2": [
    22             1,
    23             "a"
    24         ],
    25         "02": "oierte",
    26         "1": 2,
    27         "non_ascii": "青团 》 熊猫 ?"
    28     },
    29     "1": 2,
    30     "ad": "ertwer",
    31     "non_ascii": "青团 》 熊猫 ?"
    32 }
    33 >>> 
  • 相关阅读:
    SCILAB
    定积分的scilab程序
    4月26日科目一练习(96分)
    4月27日1科目一练习(90分)
    4月27日科目一练习(93分)
    4月12日科目一练习(91分)
    测试学习网站
    HttpWatch工具简介及使用技巧(转)
    Linux系统资源分析
    LoadRunner监控Linux服务器
  • 原文地址:https://www.cnblogs.com/harelion/p/5245762.html
Copyright © 2020-2023  润新知