加载中...

json模块


json模块

本文介绍了JSON作为轻量级数据交换格式的特点和优势,以及它在Python中的使用。通过json模块,探讨了如何使用dumps和loads进行Python对象与JSON字符串的转换,同时展示了如何使用dump和load进行文件操作。

1. JSON简介

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它是JavaScript的子集,易于人阅读和编写。

JSON用来存储和交换文本信息,比xml更小/更快/更易解析,易于读写,占用带宽小,网络传输速度快的特性,适用于数据量大,不要求保留原有类型的情况。

前端和后端进行数据交互,其实就是JSPython进行数据交互!

2. JSON语法规则

  1. 名称必须用双引号(即:" ")来包括
  2. 值可以是双引号包括的字符串、数字、true、false、null、JavaScript数组,或子对象
  3. 数据在name/value
  4. 数据见用逗号分隔
  5. 花括号保存对象
  6. 方括号保存数组

3. JSON数据类型

python与json数据类型的映射关系:

+-------------------+---------------+
| Python            | JSON          |
+===================+===============+
| dict              | object        |
+-------------------+---------------+
| list, tuple       | array         |
+-------------------+---------------+
| str               | string        |
+-------------------+---------------+
| int, float        | number        |
+-------------------+---------------+
| True              | true          |
+-------------------+---------------+
| False             | false         |
+-------------------+---------------+
| None              | null          |
+-------------------+---------------+

4.JSON中常用的方法

json是一个特殊的字符串。 【长的像列表/字典/字符串/数字/真假】

注意:不带s的是序列化到文件或者从文件反序列化,带s的都是内存操作不涉及持久化

4.1序列化和反序列化

  • dumps:序列化

    # 序列化,将python的值转换为json格式的字符串。
    import json
    v = [12,3,4,{'k1':'v1'},True,'asdf']
    v1 = json.dumps(v)
    print(v1)               # '[12, 3, 4, {"k1": "v1"}, true, "asdf"]'
  • loads: 反序列化

    # 反序列化,将json格式的字符串转换成python的数据类型
    v2 = '["alex",123]'
    print(type(v2))         # <class 'str'>
    v3 = json.loads(v2)
    print(v3,type(v3))      # ['alex', 123] <class 'list'>
  • 字典或列表中如有中文,序列化时想要保留中文显示

    v = {'k1':'alex','k2':'李杰'}
          
    import json
    val = json.dumps(v,ensure_ascii=False)
    print(val)

4.2序列化和反序列化的文件操作

  • dump 序列化到文件

    import json
          
    v = {'k1':'alex','k2':'李杰'}
          
    f = open('x.txt',mode='w',encoding='utf-8')
    val = json.dump(v,f)  # 使用dump和load可以读写文件
    print(val)
    f.close()
  • load 从文件读取内容进行反序列话

    import json
          
    v = {'k1':'alex','k2':'李杰'}
          
    f = open('x.txt',mode='r',encoding='utf-8')
    data = json.load(f)
    f.close() 
    print(data,type(data))

文章作者: 无夜
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 无夜 !
评论
  目录