网站:
Generic Operating System Services — Python 3.10.4 documentation
一、JSON处理
python类json序列化
import json
from json import JSONEncoder
# 两个python类
class Employee:
def __init__(self, name, salary, address):
self.name = name
self.salary = salary
self.address = address
class Address:
def __init__(self, city, street, pin):
self.city = city
self.street = street
self.pin = pin
address = Address("Alpharetta", "7258 Spring Street", "30004")
employee = Employee("John", 9000, address)
方法一:
# subclass JSONEncoder
class EmployeeEncoder(JSONEncoder):
def default(self, o):
return o.__dict__
print(EmployeeEncoder().encode(employee))
#{"name": "John", "salary": 9000, "address": {"city": "Alpharetta", "street": "7258 Spring Street", "pin": "30004"}}
employeeJSONData = json.dumps(employee, indent=4, cls=EmployeeEncoder)
print(employeeJSONData)
# {"name": "John", "salary": 9000, "address": {"city": "Alpharetta", "street": "7258 Spring Street", "pin": "30004"}}
方法二:
st = json.dumps(employee,default=lambda x: x.__dict__)
print(st)
# {"name": "John", "salary": 9000, "address": {"city": "Alpharetta", "street": "7258 Spring Street", "pin": "30004"}}
方法三:
import jsonpickle
print(jsonpickle.dumps(employee, unpicklable=False))
#{"name": "John", "salary": 9000, "address": {"city": "Alpharetta", "street": "7258 Spring Street", "pin": "30004"}}
print(jsonpickle.dumps(employee))
#{"py/object": "my_test.MyTest.test_json2.<locals>.Employee", "name": "John", "salary": 9000, "address": {"py/object": "my_test.MyTest.test_json2.<locals>.Address", "city": "Alpharetta", "street": "7258 Spring Street", "pin": "30004"}}
不是所有类都有__dict__属性,例如时间、日期、decimal
时间、日期、decimal 处理
from json import JSONEncoder
import json
class Users(object):
def __init__(self,id,username,createtime):
self.id = id
self.username = username
self.createtime = createtime
class DBModelsEncoder(JSONEncoder):
def default(self, obj):
if isinstance(obj, (datetime.date, datetime.datetime)):
return obj.isoformat(' ')
elif isinstance(obj, decimal.Decimal):
return float(obj)
return JSONEncoder.default(self, obj)
a = Users(id=0, username="a",createtime=datetime.now())
print(json.dumps(a, cls=DBModelsEncoder))
#{"id": 0, "username": "a", "createtime": "2022-04-02 16:50:44.146064"}
二、时间
from datetime import datetime,date
my_datetime = datetime.now()
print(str(my_datetime))
# 2022-04-02 17:04:48.070920
print(my_datetime.strftime("%Y-%m-%d %H:%M:%S"))
# 2022-04-02 17:04:48
print(my_datetime.isoformat(sep=' '))
# 2022-04-02 17:04:48.070920 sep: 日期与时间之前的间隔,默认 'T'
my_date = date.today()
print(str(my_date))
# 2022-04-02
print(my_date.strftime("%Y-%m-%d %H:%M:%S"))
# 2022-04-02 00:00:00
print(my_date.isoformat())
# 2022-04-02
三、decimal
from decimal import Decimal
d = Decimal(1)
print(d)
print(float(d))
# 1
# 1.0