如果要在不同的编程语言之间传递对象,就必须把对象序列化为标准格式,比如XML,但更好的方法是序列化为JSON。因为JSON表示出来就是一个字符串,可以被所有语言读取,也可以方便地存储到磁盘或者通过网络传输。JSON不仅是标准格式,并且比XML更快,而且可以直接在Web页面中读取,非常方便。
1、json简介
Json,全名JavaScript Object Notation,是一种轻量级的数据交换格式。Json最广泛的应用是作为AJAX中web服务器和客户端的通讯的数据格式,现在也常用于http请求中,所以json的各种学习,是自然而然的事情。python的json官网网址:https://docs.python.org/2/library/json.html?highlight=json#module-json。
2、json数据类型
数据类型 | 含义 |
number | 和JavaScript的number完全一致 |
boolean | 就是JavaScript的true或false |
string | 就是JavaScript的string |
null | 就是JavaScript的null |
array | 就是JavaScript的Array表示方式—[] |
object | 就是JavaScript的{…}表示方式 |
3、编解码函数
json.dumps():对数据(字符串)进行编码
json.dump():对数据(文件对象)进行编码
json.loads():对数据(字符串)进行解码
json.load():对数据(文件对象)进行解码
4、python原始类型与json类型互相转换
Python编码为JSON类型转换对应表:
Python | JSON |
dict | object |
list、tuple | array |
str | string |
int、float、int-&float-derived Enums | number |
True | true |
False | false |
None | null |
JSON | Python |
object | dict |
array | list |
string | str |
number(int) | int |
number(real) | float |
true | True |
false | False |
null | None |
4、json实例
import json
# Python 字典类型转换为 JSON 对象
data = {
'no' : 1,
'name' : 'Runoob',
'url' : 'http://www.runoob.com'
}
json_str = json.dumps(data)
print ("Python 原始数据:", repr(data))
print ("JSON 对象:", json_str)
# 将 JSON 对象转换为 Python 字典
data2 = json.loads(json_str)
print ("data2['name']: ", data2['name'])
print ("data2['url']: ", data2['url'])
print(data2)
如果你要处理的是文件而不是字符串,你可以使用json.dump()和json.load()来编码和解码JSON数据。示例如下:
#写入JSON数据
with open('data.json', 'w') as f:
json.dump(data, f)
# 读取数据
with open('data.json', 'r') as f:
data = json.load(f)