1
fgwmlhdkkkw 2021-09-22 09:31:46 +08:00
msgpack
|
2
chaleaoch OP @fgwmlhdkkkw 还是不支持 datetime ...
|
3
fgwmlhdkkkw 2021-09-22 09:48:50 +08:00
|
4
abersheeran 2021-09-22 09:50:30 +08:00
自己定义 datetime 的序列化与反序列化方式不就好了。golang 里同理。
不过我建议你先把 golang 的写好,因为 python json 自定义起来比 golang 方便多了,python 能轻松解析的 json,golang 可不一定。 |
5
ysc3839 2021-09-22 09:54:27 +08:00
@chaleaoch msgpack 自己就有 timestamp 类型的扩展支持。就算不支持也可以自己实现,msgpack 有 ext 类型。
|
6
arthurire 2021-09-22 09:55:34 +08:00
你可以直接转换成 Unix epoch 然后再序列化吧?
|
7
ipwx 2021-09-22 10:18:00 +08:00
1. json 比较通用,所以大概还是用 json 更好。
2. 你可以扩展标准的 json encoder 。第三方 json encoder 比如 ujson 好像也支持。 3. 或者其实比如我,一般都直接把 datetime 转换成 timestamp ( python timestamp * 1000 变成毫秒)然后丢给 C++ 的。C++ 也是存 timestamp 丢给 python 。 |
8
2i2Re2PLMaDnghL 2021-09-22 10:24:02 +08:00
这个 Python 没有 trait 就是逊啦
不然直接 impl datetime for JsonSerializable 不就行了 题外话,其实我感觉你直接 pydantic 就行。 确实推荐按类型动态性由弱到强地写。 python dict 是 dict[Hashable, Any] ,比 JSON 还动态。 |
9
chaleaoch OP @fgwmlhdkkkw 我知道 我可以自定义 encoder 实现. 这没问题. 我的问题是 json 除了不支持 datetime 是否还有其他不支持的格式.
|
10
chaleaoch OP @2i2Re2PLMaDnghL 问题是 session 已经存在了 , 现在是在一个既存的应用上改. 如果新项目方案就很多了.
|
11
zeroxia 2021-09-22 10:38:34 +08:00
flatbuffers?
|
12
misaka19000 2021-09-22 12:23:51 +08:00
ES 用的就是 JSON,没什么问题的
|
13
2i2Re2PLMaDnghL 2021-09-22 16:05:20 +08:00
@chaleaoch json 就 7 种内容不是吗?
object array string number true false null 对应 dict list str int/float True False None 你可以估计大部分是不支持的 除非你写成 pydantic,能打通 object <=> dict 的界面,类比 ORM 我叫它 OJM 吧 |
14
Nich0la5 2021-09-22 17:05:59 +08:00
Protobuf
|
15
chaleaoch OP @2i2Re2PLMaDnghL 谢谢. 你说的没错, 要这么干又要照顾应用层了.
最后的方案是我们把这个功能砍了. - - 后面再说. |
16
neoblackcap 2021-09-22 19:04:01 +08:00
只是让 datetime 类型支持 json 格式序列化的话,直接实现 encoder/decoder 就好了,不管是 go 还是 python 的标准库都可以支持这个操作。
|
17
Hstar 2021-09-22 19:12:22 +08:00
你猜你想问 Django 默认的 json 序列化器额外支持了哪些类型,可以直接看 DjangoJSONEncoder 的源码 https://github.com/django/django/blob/ca9872905559026af82000e46cde6f7dedc897b6/django/core/serializers/json.py#L77
可见除了 datetime 的几个类型外,还做了 UUID 、decial 和 django.Promise 的 json 序列化支持 |
18
tmackan 2021-09-22 19:19:03 +08:00
json
|
19
zepc007 2021-09-23 09:36:16 +08:00
@2i2Re2PLMaDnghL +1,pydantic 好评
|
20
O5oz6z3 2021-09-23 17:23:29 +08:00 1
偶然看到 https://hynek .me/articles/serialization/
|