|
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
|
|