一. 什么是JSON
1. JSON是JavaScript Object Notation的缩写,它是一种轻量级数据交互格式
2. 本质是一个字符串,是JS对象的字符串表示法
3. 与python中的字典很类似,不过有一些语法上的区别
- 没有None值,只有null值
- utf-8的编码格式
- 字符串必须是双引号来表达的
4. python当中的字符串要转换成json对象,要使用json库来完成
二. 导入json模块
import json
三. json模块常用方法
1. json.dumps(str, indent=4, sort_keys=True) 将一个python数据对象转换成一个json字符串
- indent:格式化输出json数据,呈现更直观。indent=4表示缩进4个空格
- sort_keys:json字符串按照字典的key进行排序
2. json.loads() 将一个json字符串转换成python对象,比如json字符串转换成列表、字典
四. 实例
实例1
import json
#把一个python对象转换成json字符串
a = {"name": "xiaozhai", "sex": None}
b = json.dumps(a)
print(b)
print(type(b))
#把一个json字符串转换成一个python字典
c = json.loads(b)
print(c)
print(type(c))
运行结果
{"name": "xiaozhai", "sex": null}
<class 'str'>
{'name': 'xiaozhai', 'sex': None}
<class 'dict'>
注意:print()函数为了生成可读性更好的输出, 它会省去引号并打印,如果我们在python自带的IDLE中,不加print(),会看到更好的效果
实例2:json.dumps()中indent的作用是缩进空格,sorted_keys会按照字典中key的首字母进行排序
import json
#把一个python对象转换成json字符串
a = {"name": "xiaozhai", "sex": None}
b = json.dumps(a, indent=4, sort_keys=True)
print(b)
print(type(b))
运行结果
{
"name": "xiaozhai",
"sex": null
}
<class 'str'>
五. 附录
1. python原始类型向json类型的转化对照表
Python | JSON |
dict | object |
list, tuple | array |
str, unicode | string |
int, long, float | number |
True | true |
False | false |
None | null |
2. json类型转换到python类型的转化对照表
JSON | Python |
object | dict |
array | list |
string | unicode |
number(int) | int, long |
number(real) | float |
true | True |
false | False |
null | None |
参考文章
http://www.runoob.com/python/python-json.html