电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

Python3中的json模块使用详解 VIP免费

Python3中的json模块使用详解 _第1页
1/8
Python3中的json模块使用详解 _第2页
2/8
Python3中的json模块使用详解 _第3页
3/8
Python3中的json模块使⽤详解1.概述JSON(JavaScriptObjectNotation)是⼀种使⽤⼴泛的轻量数据格式.Python标准库中的json模块提供了JSON数据的处理功能.Python中⼀种⾮常常⽤的基本数据结构就是字典(Dictionary).它的典型结构如下:d={'a':123,'b':{'x':['A','B','C']}}⽽JSON的结构如下:{"a":123,"b":{"x":["A","B","C"]}}可以看到,Dictionary和JSON⾮常接近,⽽Python中的json库提供的主要功能,也是两者之间的转换.2.读取JSONjson.loads⽅法可以将包含了⼀个JSON数据的str,bytes或者bytearray对象,转化为⼀个PythonDictionary.它的完型接⼝签名如下:复制代码代码如下:json.loads(s,*,encoding=None,cls=None,object_hook=None,parse_float=None,parse_int=None,parse_constant=None,object_pairs_hook=None,**kw)2.1最简单的例⼦json.loads最基本的使⽤⽅式就是将⼀个包含JSON数据的str传递给这个⽅法:>>>json.loads('{"a":123}'){'a':123}注意在Python中,str值可以放在⼀对单引号中,也可以放在⼀对双引号中:>>>'ABC'=="ABC"True所以,在定义Dictionary的str类型的键和值的时候,使⽤单引号或者双引号都是合法和等价的:>>>{"a":'ABC'}=={'a':"ABC"}True但是,在JSON中,字符串数据只能放在双引号中,因⽽json.loads⽅法处理的字符串的JSON内容中,字符串必须使⽤双引号.否则就会发⽣解码错误:>>>json.loads("{'a':123}")Traceback(mostrecentcalllast):File"",line1,inFile"/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/__init__.py",line354,inloadsreturn_default_decoder.decode(s)File"/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/decoder.py",line339,indecodeobj,end=self.raw_decode(s,idx=_w(s,0).end())File"/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/json/decoder.py",line355,inraw_decodeobj,end=self.scan_once(s,idx)json.decoder.JSONDecodeError:Expectingpropertynameenclosedindoublequotes:line1column2(char1)如果被处理的Python字符串是包含在双引号中的,那么JSON中的双引号就需要转义:>>>json.loads("{\"a\":123}"){'a':123}2.2bytes和bytearray数据对于内容是JSON数据的bytes和bytearray,json.loads⽅法也可以处理:>>>json.loads('{"a":123}'.encode('UTF-8')){'a':123}>>>json.loads(bytearray('{"a":123}','UTF-8')){'a':123}2.3编码格式json.loads的第⼆个参数是encoding没有实际作⽤.由于Python3中str类型总是使⽤UTF-8编码,所以s参数为str类型时,json.loads⽅法⾃动使⽤UTF-8编码.并且,str不能以BOM字节开头.当s参数为bytes或者bytearray时,json.loads⽅法会⾃动判断为UTF-8,UTF-16还是UTF-32编码.默认也是将其按照UTF-8编码转化为str对象进⾏后续处理.2.4数据类型转换JSON可以表⽰四种主类型数据1.字符串string2.数字number3.布尔类boolean4.空值null以及两结数据结构1.对象object2.数组array默认实现中,JSON和Python之间的数据转换对应关系如下表:JSONPythonobjectdictarrayliststringstrnumber(int)intnumber(real)floattrueTruefalseFalsenullNone实际转换情况如下例:>>>json.loads("""...{..."obj":{..."str":"ABC",..."int":123,..."float":-321.89,..."bool_true":true,..."bool_false":false,..."null":null,..."array":[1,2,3]...}...}"""){'obj':{'str':'ABC','int':123,'float':-321.89,'bool_true':True,'bool_false':False,'null':None,'array':[1,2,3]}}对于JSON中数字number类型的数据,有以下⼏点需要注意:1.JSON中的实数realnumber类型的精度不能超过Python中的float类型的精度范围,否则就有精度损失.如下例:>>>json.loads('3.141592653589793238462643383279')3.1415926535897932.JSON标准不包括⾮数字NaN,正⽆穷Infinity和负⽆穷-Infinity,但是json.loads⽅法默认会将JSON字符串中的NaN,Infinity,-Infinity转化为Python中的float('nan'),float('inf')和float('-inf').注意,这⾥JSON中的NaN,Infinity,-Infinity必须⼤⼩写正确并且拼写完整.如...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

Python3中的json模块使用详解

您可能关注的文档

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部