1. JSON简介
- JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写。
- 使用 JSON 函数需要导入 json 库:
import json
官方文档:https://docs.python.org/2/library/json.html
2. JSON函数
2.1 json.dumps
json.dumps:将 Python 对象编码成 JSON 字符串
语法格式:
json.dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding=“utf-8”, default=None, sort_keys=False, **kw)
ensure_ascii=False:中文可以成功存储
indent=4: 缩进为4个空格
separators=(',',':'):自定义分隔符,元素之间分隔符为逗号,字典的key与value分隔符为冒号
sort_keys=True:字典排序
实例1
import json
data = [ {
'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ]
data2 = json.dumps(data)
print(data2)
执行结果为:
[{
"a": 1, "c": 3, "b": 2, "e": 5, "d": 4}]
实例2:使用参数让 JSON 数据格式化输出
import json
data = [ {
'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ]
data2 = json.dumps({
'a': 'Runoob', 'b': 7}, sort_keys=True, indent=4, separators=(',', ': '))
print(data2)
执行结果为:
{
"a": "Runoob",
"b": 7
}
实例3
import json
users = {
'name':'westos', "age":18, 'city':'西安'}
json_str = json.dumps(users)
with open('doc/hello.json', 'w') as f:
# ensure_ascii=False:中文可以成功存储
# indent=4: 缩进为4个空格
json.dump(users, f, ensure_ascii=False, indent=4)
print("存储成功")
print(json_str, type(json_str))
执行结果为:
存储成功
{
"name": "westos", "age": 18, "city": "\u897f\u5b89"} <class 'str'>
存储在文档:
{
"name": "westos",
"age": 18,
"city": "西安"
}
2.2 json.loads
json.loads:将已编码的 JSON 字符串解码为 Python 对象
语法格式:
json.loads(s[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]])
实例1
import json
jsonData = '{"a":1,"b":2,"c":3,"d":4,"e":5}'
text = json.loads(jsonData)
print(text)
执行结果为:
{
u'a': 1, u'c': 3, u'b': 2, u'e': 5, u'd': 4}
实例2
import json
with open('doc/hello.json') as f:
python_obj = json.load(f)
print(python_obj, type(python_obj))
执行结果为:
{
'name': 'westos', 'age': 18, 'city': '西安'} <class 'dict'>
附加:
第三方库:Demjson
Demjson 是 python 的第三方模块库,可用于编码和解码 JSON 数据,包含了 JSONLint 的格式化及校验功能