找回密码
 会员注册
查看: 20|回复: 0

Python中str与json转换

[复制链接]

5

主题

0

回帖

16

积分

新手上路

积分
16
发表于 2024-9-6 00:10:39 | 显示全部楼层 |阅读模式
Python中str与json转换json.load()将一个json格式的文件对象转化为python对象(dict)(文件名可以不是xxx.json,但是文件内容一定是json格式)json.loads()将一个json对象(type:str)转化为相对应的python对象(dict),loads不能解析文件,会报错json.dump()数据可写入到文件中,无返回数据json.dumps()将python的对象转化为对应的json对象(str)json是Python自带的库,load和dump应用于文件处理(json格式的文件,非xxx.json),dumps和loads是在内存中转换(python对象和json字符串之间的转换)json.load()将一个json格式的文件对象转化为python对象(dict)(文件名可以不是xxx.json,但是文件内容一定是json格式)解析文件时常用,解析后type是json.load(fp,*,cls=无,object_hook=无,parse_float=无,parse_int=无,parse_constant=无,object_pairs_hook=无,**kw)Deserializefp(a.read()-supportingtextfileorbinaryfilecontainingaJSONdocument)toaPythonobjectusingthisconversiontable.将fp(支持文本文件或包含JSON文档的二进制文件)反序列化为Python对象123withopen('aa.json','r')asdata_file:f=json.load(data_file)print(type(f))print(f)>>>>>>{'today':'0326','id':'11'}1234567importjsonfile=open('aa.json')data=json.load(file)file.close()1234效果一样,但是用with打开文件更好,会自动调用close()关闭文件如果文件内容不是json格式,会报错:raiseJSONDecodeError("Expectingvalue",s,err.value)fromNonejson.decoder.JSONDecodeError:Expectingvalue:line2column1(char1)12json.loads()将一个json对象(type:str)转化为相对应的python对象(dict),loads不能解析文件,会报错常用于将str类型的数据转成dict。json.loads(s,*,cls=无,object_hook=无,parse_float=无,parse_int=无,parse_constant=无,object_pairs_hook=无,**kw)Deserializes(astr,bytesorbytearrayinstancecontainingaJSONdocument)toaPythonobjectusingthisconversiontable.使用此转换表将s(包含JSON文档的实例)反序列化为Python对象。123a="{'today':'0326','id':'11'}"b=json.loads(a)print(b)123报错json.decoder.JSONDecodeError:Expectingpropertynameenclosedindoublequotes:line1column2(char1)解决方案:字符串单引号引用,里面数据用双引号a='{"today":"0326","id":"11"}'1其他方式后续补充loads解析文件报错raiseTypeError(f'theJSONobjectmustbestr,bytesorbytearray,'TypeError:theJSONobjectmustbestr,bytesorbytearray,notTextIOWrapper12json.dump()数据可写入到文件中,无返回数据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)SerializeobjasaJSONformattedstreamtofp(a-supportingfile-likeobject)usingthisconversiontable..write()使用此转换表将obj作为JSON格式的流序列化为fp(支持类似文件的对象)。.write()123a={"today":"0326","id":"22222"}withopen("bb.json",'w')asf:json.dump(a,f)输出:print(type(json.dump(a,f)))1234567数据a写入到aa.json文件里json.dumps()将python的对象转化为对应的json对象(str)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)将obj序列化为JSON对象(usingstr)。这些参数的含义与dump中的含义相同。12NoteKeysinkey/valuepairsofJSONarealwaysofthetypestr.WhenadictionaryisconvertedintoJSON,allthekeysofthedictionaryarecoercedtostrings.Asaresultofthis,ifadictionaryisconvertedintoJSONandthenbackintoadictionary,thedictionarymaynotequaltheoriginalone.Thatis,loads(dumps(x))!=xifxhasnon-stringkeys.注意JSON的键/值对中的键始终为类型。什么时候一个字典转换成JSON,字典的所有键都是被胁迫到字符串。因此,如果字典被转换进入JSON,然后返回到字典中,字典可能不等于原来的那个。也就是说,loads(dumps(x))!=xifxhasnon-stringkeys.a={"today":"0326","id":"22222"}#a=[{"today":"0326","id":"22222"}]withopen("bb.json",'w')asf:print(json.dump(a,f))print(type(json.dump(a,f)))json.dump(a,f)print(json.dumps(a))print(type(json.dumps(a)))>>>None{"today":"0326","id":"22222"}123456789101112131415
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-9 19:11 , Processed in 0.435503 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表