zoukankan      html  css  js  c++  java
  • Python常用模块--json

    官方解释

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。人类很容易读写。机器很容易解析和生成。它基于 JavaScript编程语言的一部分, 标准ECMA-262第3版 - 1999年12月JSON是一种完全独立于语言的文本格式,但使用C语言系列程序员熟悉的约定,包括C,C ++,C#,Java,JavaScript,Perl,Python等等。这些属性使JSON成为理想的数据交换语言。

    JSON基于两种结构:

    • 名称/值对的集合。在各种语言中,这被实现为对象,记录,结构,字典,散列表,键控列表或关联数组。
    • 有序的值列表。在大多数语言中,这被实现为数组,向量,列表或序列。

    这些是通用数据结构。实际上,所有现代编程语言都以某种形式支持它们。有意义的是,可与编程语言互换的数据格式也基于这些结构。

    Python 中的json模块,官方介绍:https://docs.python.org/3.7/library/json.html

    在python中,有专门处理json格式的模块—— json 和 picle模块

    Json   模块提供了四个方法: dumps、dump、loads、load

    pickle 模块也提供了四个功能:dumps、dump、loads、load  (本文不做介绍)
        +-------------------+---------------+
        | Python            | JSON          |
        +===================+===============+
        | dict              | object        |
        +-------------------+---------------+
        | list, tuple       | array         |
        +-------------------+---------------+
        | str               | string        |
        +-------------------+---------------+
        | int, float        | number        |
        +-------------------+---------------+
        | True              | true          |
        +-------------------+---------------+
        | False             | false         |
        +-------------------+---------------+
        | None              | null          |
        +-------------------+---------------+
    

      

    1.将Python对象转换为json格式:

    dump(obj, fp, *, skipkeys=False, ensure_ascii=True, check_circular=True,allow_nan=True, cls=None, indent=None, separators=None,
    default=None, sort_keys=False, **kw):
    # 将生成的json串,直接存入指定的文件中,没有返回值
    dumps(obj, *, skipkeys=False, ensure_ascii=True, check_circular=True,allow_nan=True, cls=None, indent=None, separators=None,
    default=None, sort_keys=False, **kw):
    # 将生成的json串返回


    其他参数说明:
    skipkeys:默认False,如果传入的obj是字典类型,且字典的key类型不在(``str``, ``int``, ``float``, ``bool``, ``None``)中,会报格式错误,如有,则设为Ture;
    ensure_ascii:默认True,设为False时,中文显示正常;
    check_circular:默认Ture,设为False时,会跳过循环引用检查,如果循环引用出错会导致溢出错误;
    sort_keys:默认False,设为True时,生成的json按照key值进行排序

    上代码:

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    __author__ = "问道编程"
    __date__ = "2019/03/18 17:50"

    import json

    print('--------------- 字符串转换:')
    a = ""fooar"
    result = json.dumps(a) # 返回生成的json串
    print('a = ', a)
    print('result:', result) # 可以发现 result 和 a 在显示上一样 但是打印结果不同 说明不是一样的
    print('类型:', type(result))
    print('---------------
    将转换后的json写入文件:')
    myfile = open('a.json', 'w')
    a = [1, 2, 3, {'4': 5, '6': 7}]
    json.dump(a, myfile, indent=4) # 没有返回值
    myfile.close()

    2.将json转换为Python对象:

    load(fp, *, cls=None, object_hook=None, parse_float=None,parse_int=None, parse_constant=None, object_pairs_hook=None, **kw):
    # 从文件中读取json串,转换为Python对象返回
    loads(s, *, encoding=None, cls=None, object_hook=None, parse_float=None,parse_int=None, parse_constant=None, object_pairs_hook=None, **kw):
    # 将json串直接转换为Python对象

    上代码:

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    __author__ = "问道编程"
    __date__ = "2019/03/18 17:50"

    import json

    print('--------------- 转换为列表:')
    json_str = '["foo", {"bar":["baz", null, 1.0, 2]}]'
    result = json.loads(json_str) # 将json串转换为Python对象
    print('json_str = ', json_str)
    print('result:', result)
    print('json_str类型:', type(json_str))
    print('result类型:', type(result))
    print('---------------
    从文件中解码json:')
    myfile = open('a.json', 'r')
    result = json.load(myfile)
    print('result:', result)
    print('result类型:', type(result))
  • 相关阅读:
    20155323 2016-2017-2 《Java程序设计》第7周学习总结
    20155323刘威良第一次实验 Java开发环境的熟悉(Linux + IDEA)
    20155323 2016-2017-2 《Java程序设计》第6周学习总结
    20155323 2016-2017-2 《Java程序设计》第5周学习总结
    20155323 2016-2017-2 《Java程序设计》第4周学习总结
    20155323 2016-2017-2 《Java程序设计》第3周学习总结
    20155323 2016-2017-2 《Java程序设计》第2周学习总结
    20155323 2016-2017-2 《Java程序设计》第一周学习总结
    20155320 2016-2017-2 《Java程序设计》第六周学习总结
    20155320 2016-2017-2 《Java程序设计》第五周学习总结
  • 原文地址:https://www.cnblogs.com/wendaobiancheng/p/10553948.html
Copyright © 2011-2022 走看看