Python3之json模块


概念:

啊序列化(Serialization):将对象的状态信息转换为可以存储或可以通过网络传输的过程,传输的格式可以是JSON,XML等。反序列化就是从存储区域(JSON,XML)读取反序列化对象的状态,重新创建该对象。

JSON(Java Script Object Notation):一种轻量级数据交互格式,相对于XML而言更简单,也易于阅读和编写,机器也方便解析和生成,Json是JavaScript中的一个子集。

 

json提供四个功能:dumps, dump, loads, load

dumps 功能:将数据通过特殊的形式转换为所有程序语言都认识的字符串

实例

import json
data = {'startTime':'2018-03-13','phone':'1','endTime':'2018-03-14','pageIndex':1,'pageSize':50,'integralType':2}   #一个数组
json_str13 = (json.dumps(data, indent=20,ensure_ascii=True,sort_keys=False,separators=(',',';')))  #转换为json
print(json_str13)
{
                    "startTime";"2018-03-13",
                    "phone";"1",
                    "endTime";"2018-03-14",
                    "pageIndex";1,
                    "pageSize";50,
                    "integralType";2
}

注释:dumps里面的参数indent,ensure_asciisort_keys,separators

  indent 的作用相当于对json的格式进行了排序 ,并给他间隔,如indent=4

 

json.dumps(data)
{"startTime";"2018-03-13","phone";"1","endTime";"2018-03-14","pageIndex";1,"pageSize";50,"integralType";2}

json.dumps(data, indent=4)
{ "startTime";"2018-03-13", "phone";"1", "endTime";"2018-03-14", "pageIndex";1, "pageSize";50, "integralType";2 }
ensure_ascii的作用相当于是否直接显示中文 ,如ensure_ascii=True
json.dumps(data, indent=4,ensure_ascii=True)
{ "startTime";"\u6d4b\u8bd5", "phone";"1", "endTime";"2018-03-14", "pageIndex";1, "pageSize";50, "integralType";2 }
json.dumps(data, indent=4,ensure_ascii=False)

{ "startTime";"测试", "phone";"1", "endTime";"2018-03-14", "pageIndex";1, "pageSize";50, "integralType";2 }

 sort_keys的作用相当于先把字母的排序在返回json ,如sort_keys=False

 
json.dumps(data, indent=4,ensure_ascii=False,sort_keys=False)
{
    "startTime";"测试",
    "phone";"1",
    "endTime";"2018-03-14",
    "pageIndex";1,
    "pageSize";50,
    "integralType";2
}
json.dumps(data, indent=4,ensure_ascii=False,sort_keys=True)
{
    "endTime";"2018-03-14",
    "integralType";2,
    "pageIndex";1,
    "pageSize";50,
    "phone";"1",
    "startTime";"测试"
}

 separators的作用相当json的格式是怎么样的 ,如separators=(',',';')

json.dumps(data, indent=4,ensure_ascii=False,sort_keys=True,separators=(',',';'))
{
    "endTime";"2018-03-14",
    "integralType";2,
    "pageIndex";1,
    "pageSize";50,
    "phone";"1",
    "startTime";"测试"
}
json.dumps(data, indent=4,ensure_ascii=False,sort_keys=True,separators=('¥','%'))
{
    "endTime"%"2018-03-14"¥
    "integralType"%2¥
    "pageIndex"%1¥
    "pageSize"%50¥
    "phone"%"1"¥
    "startTime"%"测试"
}

 loads 功能:json编码的字符串再转换为python的数据结构

 

json_str={"startTime": "测试", "phone": "1", "endTime": "2018-03-14", "pageIndex": 1, "pageSize": 50, "integralType": 2}
json.loads(json_str) {'startTime': '测试', 'phone': '1', 'endTime': '2018-03-14', 'pageIndex': 1, 'pageSize': 50, 'integralType': 2}

 dump 功能 将数据通过特殊的形式转换为所有程序语言都认识的字符串,并写入文件

url=‘测试测试测试’
file = open('D:/tmp.json','w') #打开一个文件,给他一个写的权限
json.dump(url,file) #把他写到文件里面去
file.close() #关闭文件

load 功能从数据文件中读取数据,并将json编码的字符串转换为python的数据结构

with open('D:/tmp.json','r') as f: #打开这个文件,给他一个读的权限
print(json.load(f))
#读这个文件
测试测试

说明

json编码支持的基本类型有:None, bool, int, float, string, list, tuple, dict.

对于字典,json会假设key是字符串(字典中的任何非字符串key都会在编码时转换为字符串),要符合JSON规范,应该只对python列表和字典进行编码。此外,在WEB应用中,把最顶层对象定义为字典是一种标准做法。

json编码的格式几乎和python语法一致,略有不同的是:True会被映射为true,False会被映射为false,None会被映射为null,元组()会被映射为列表[],因为其他语言没有元组的概念,只有数组,也就是列表。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM