56 lines
1.5 KiB
Python
56 lines
1.5 KiB
Python
|
|
#!/usr/bin/env python
|
||
|
|
# -*- coding: utf-8 -*-
|
||
|
|
import asyncio
|
||
|
|
import sys
|
||
|
|
sys.path.insert(0, 'ruoyi-fastapi-backend')
|
||
|
|
|
||
|
|
from datetime import date, datetime
|
||
|
|
from utils.common_util import CamelCaseUtil
|
||
|
|
|
||
|
|
# 模拟数据库返回的数据
|
||
|
|
receipt_dict = {
|
||
|
|
'receiptId': 685,
|
||
|
|
'receiptNo': '2026内检509',
|
||
|
|
'receiptDate': date(2026, 1, 12),
|
||
|
|
'createTime': datetime(2026, 4, 15, 13, 27, 44),
|
||
|
|
'samples': [
|
||
|
|
{
|
||
|
|
'sampleId': 3879,
|
||
|
|
'sampleSn': '2509002SG',
|
||
|
|
'testDeadline': None,
|
||
|
|
'createTime': datetime(2026, 4, 15, 13, 27, 44)
|
||
|
|
},
|
||
|
|
{
|
||
|
|
'sampleId': 3880,
|
||
|
|
'sampleSn': '2509003SG',
|
||
|
|
'testDeadline': None,
|
||
|
|
'createTime': datetime(2026, 4, 15, 13, 27, 44)
|
||
|
|
}
|
||
|
|
]
|
||
|
|
}
|
||
|
|
|
||
|
|
# 测试 serialize_dates 函数
|
||
|
|
def serialize_dates(obj):
|
||
|
|
if isinstance(obj, dict):
|
||
|
|
for key, value in obj.items():
|
||
|
|
if hasattr(value, 'isoformat'): # datetime/date 对象
|
||
|
|
obj[key] = value.isoformat()
|
||
|
|
elif isinstance(value, list):
|
||
|
|
for item in value:
|
||
|
|
serialize_dates(item)
|
||
|
|
return obj
|
||
|
|
|
||
|
|
print("Original:", receipt_dict)
|
||
|
|
result = serialize_dates(receipt_dict)
|
||
|
|
print("Serialized:", result)
|
||
|
|
|
||
|
|
# 测试 jsonable_encoder
|
||
|
|
from fastapi.encoders import jsonable_encoder
|
||
|
|
try:
|
||
|
|
encoded = jsonable_encoder(result)
|
||
|
|
print("jsonable_encoder success:", encoded)
|
||
|
|
except Exception as e:
|
||
|
|
import traceback
|
||
|
|
print("jsonable_encoder error:")
|
||
|
|
traceback.print_exc()
|