关于python:浅谈python中的json

29次阅读

共计 2465 个字符,预计需要花费 7 分钟才能阅读完成。

一 前言
最近始终在做开发相干的工作 – 基于 Django 的 web 平台,其中须要从 model 层传输数据到 view 层做数据展现或者做业务逻辑解决。咱们采纳通用的 Json 格局 –Json(JavaScript Object Notation) 是一种轻量级的数据交换格局,易于浏览和程序解析。

二 意识 Json
2.1 Json 构造
常见的 Json 格局为“名称 / 值”对的汇合, 其中 值能够是对象,列表,字典,字符串等等。比方
backup_data = {“back_to_host”: “dbbk0”,

                    "ip_address": "10.10.20.3",
                    "host_name": "rac4",
                    "port": 3306}

2.2 应用 Json
Python 的 Json 模块序列化与反序列化的过程别离是 编码和解码。这两个过程波及到两组不同的函数
编码 把一个 Python 对象编码转换成 Json 字符串,json.dumps(data)/json.dump(data,file_handler)
解码 把 Json 格局字符串解码转换成 Python 对象,json.loads(data)/json.load(file_handler)
在 python 中要应用 Json 模块做相干操作,必须先导入:
import Json
2.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 从新反序列化为 dict
json.load()的参数针对文件句柄,比方本地有一个文件 /tmp/test.json  json_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]: print json_str
{"ip_address": "10.215.20.3", "back_to_host": "rac1", "host_name": "rac3", "port": 3306}
In [9]: json_loads=json.load(json_str)
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-9-180506f16431> in <module>()
----> 1 json_loads=json.load(json_str)
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.pyc in load(fp, encoding, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)
    284
    285 ""

留神 从下面的报错信息来看 json.loads 传参是字符串类型,并不是文件句柄,没有 read()属性。

In [10]: json_loads=json.loads(json_str)
In [11]: print json_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]: dict
In [13]: type(json_str)
Out[13]: str

利用 dump 将数据写入 dump.json

In [17]: with open('/tmp/dump.json','w') as f:
    ...: 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 的数据读出来并赋值给 data

In [18]: with open('/tmp/dump.json','r') as f:
    ...: data=json.load(f)
    ...:
In [19]: print data
{"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 技术大本营,获取更多技能与教程。

正文完
 0