1、load
python json load
get=json.load(open(datarxml,'r'))
2、save
dump作用是对dict进行处理,之后可以进行write或者read。
# 写数据
with open('data.json', 'w') as f:
json.dump(data, f)
# 读取数据
with open('data.json', 'r') as f:
data = json.load(f)
3、处理特殊类型
Python 处理 JSON 数据时,dumps 函数是经常用到的,当 JSON 数据中有特殊类型时,往往是比较头疼的,因为经常会报这样一个错误:
import json
from datetime import datetime
USER_DATA = dict(
id = 1, name = 'wxnacy', ts = datetime.now()
)
print(json.dumps(USER_DATA))
- 处理方式一:
import json
from datetime import datetime
class CustomEncoder(json.JSONEncoder):
def default(self, x):
if isinstance(x, datetime):
return int(x.timestamp())#处理timestamp类型(默认不支持此类型数据)
return super().default(self, x)
USER_DATA = dict(
id = 1, name = 'wxnacy', ts = datetime.now()
)
print(json.dumps(USER_DATA, cls=CustomEncoder))
- 处理方式二:
根据包装函数来进行处理:
from datetime import datetime
from datetime import date
from functools import singledispatch
class CustomEncoder(json.JSONEncoder):
def default(self, x):
try:
return encode(x)
except TypeError:
return super().default(self, x)
@singledispatch # 1
def encode(x):
raise TypeError('Unencode type')
@encode.register(datetime) # 2
def _(x):
return int(x.timestamp())
@encode.register(date)
def _(x):
return x.isoformat()
print(json.dumps(dict(dt = datetime.now(), d = date.today()), cls=CustomEncoder))
# {"dt": 1562940781, "d": "2019-07-12"}
参考文献
- https://www.jb51.net/article/165378.htm