JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它基于ECMAScript的一个子集,易于阅读和编写。
Python3 中可以使用json模块来对JSON数据进行编码,它包含了两个函数:
在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 |
#! _*_ coding _*_
#! /usr/bin/python3
import json
# Python 字典类型转换为JSON对象
data = {
'no':1,
'name':'weiliang',
'age': 24
}
json_str = json.dumps(data)
# repr()函数将对象转化为解释器读取的形式,返回一个对象的string格式
print("Python 原始数据:", repr(data))
print("JSON 对象:", json_str)
输出结果为:
Python 原始数据: {'name': 'weiliang', 'no': 1, 'age': 24}
JSON 对象: {"name": "weiliang", "no": 1, "age": 24}
简单类型通过编码后跟其原始的repr()输出结果非常相似
使用参数让JSON数据格式化输出:
import json
print(json.dumps({'name':'weiliang','age':24},sort_keys=True, indent=4, separators=(',', ':')))
输出为:
{
"age":24,
"name":"weiliang"
}
# 将JSON 对象转换为Python字典
data2 = json.loads(json_str)
print("data2['name']:",data2['name'])
print("data2['age']:",data2['age'])
输出结果为:
data2['name']: weiliang
data2['age']: 24
还可以使用 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)
Demjson 是python 的第三方模块库,可用于编码和解码JSON数据,包含JSONLint的格式化及校验功能。
Github地址:https://github.com/dmeranda/demjson
官方地址:http://deron.meranda.us/python/demjson/
https://www.w3cschool.cn/python3/python3-json.html
https://docs.python.org/3/library/json.html