当前位置: 首页 > 后端技术 > Python

浅谈json

时间:2023-03-25 23:47:33 Python

inpython1前言最近一直在做开发相关的工作--基于Django的web平台,其中需要将数据从model层传递到view层,用于数据展示或者业务逻辑处理。我们采用通用的Json格式——Json(JavaScriptObjectNotation)是一种轻量级的数据交换格式,便于阅读和程序分析。2理解Json2.1Json结构常见的Json格式是“名/值”对的集合,其中的值可以是对象、列表、字典、字符串等。例如backup_data={"back_to_host":"dbbk0","ip_address":"10.10.20.3","host_name":"rac4","port":3306}2.2使用JsonPython的Json模块进行序列化和反序列化过程分别是编码和解码。这两个过程涉及两组不同的函数编码,将Python对象编码为Json字符串,以及json.dumps(data)/json.dump(data,file_handler)将Json格式字符串解码转换为Python对象。json.loads(data)/json.load(file_handler)在python中使用Json模块做相关操作,首先要导入:importJson2.3主要函数编码函数主要有json.dumps(data)/json.dump(data,file_handler)json.dumps()的参数是将python对象转成字符串,比如使用json.dumps序列化的对象json_dumps=json.dumps({'a':1,'b':2}),json_dumps='{"b":2,"a":1}'json.dump将内置类型序列化为json对象写入文件。解码函数主要由json.loads(data)/json.load(file_handler)组成,json.loads的参数是一个内存对象,将Json格式的字符串解码转换成Python对象,json_loads=json.loads(d_json)#{b":2,"a":1},使用load重新反序列化为文件句柄的dictjson.load()的参数,比如本地有一个文件/tmp/test.jsonjson_load=json.load(open('/tmp/test.json'))具体案例参考如下:In[3]:data={"back_to_host":"rac1",...:"ip_address":"10.215.20.3",...:"host_name":"rac3",...:"port":3306}In[7]:json_str=json.dumps(data)In[8]:printjson_str{"ip_address":"10.215.20.3","back_to_host":"rac1","host_name":"rac3","port":3306}In[9]:json_loads=json.load(json_str)------------------------------------------------------------------------AttributeErrorTraceback(最近调用最后)in()---->1json_loads=json。加载(json_str)/系统/图书馆/框架电子工程/Python.framework/Versions/2.7/lib/python2.7/json/__init__.pycinload(fp,encoding,cls,object_hook,parse_float,parse_int,parse_constant,object_pairs_hook,**kw)284285""上面的注释来自报错信息,json.loads参数是字符串类型,不是文件句柄,没有read()属性在[10]中:json_loads=json.loads(json_str)在[11]中:printjson_loads{u'back_to_host':u'rac1',u'ip_address':u'10.215.20.3',u'host_name':u'rac3',u'port':3306}In[12]:type(json_loads)Out[12]:dictIn[13]:type(json_str)Out[13]:str使用dump向dump.jsonIn[17]:withopen('/tmp/dump.json','w')asf:...:json.dump(json_str,f)...:yangyiDBA:~yangyi$cat/tmp/dump.json"{\"ip_address\":\"10.10.20.3\",\"back_to_host\":\"rac1\",\"host_name\":\"rac3\",\"port\":3306}"yangyiDBA:~yangyi$使用json.load读取dump.sjon的数据赋值给dataIn[18]:withopen('/tmp/dump.json','r')asf:...:data=json.load(f)...:In[19]:printdata{"ip_address":"10.10.20.3","back_to_host":"rac1","host_name":"rac3","port":3306}三小结本文为学习笔记,主要比较json.loads/json.load、json.dumps/json.dump在使用上的区别,方便以后更好的使用json以上就是本次分享的全部内容。现在想学习编程的朋友欢迎关注Python技术大本营获取更多技能和教程。