我们使用 js-joda LocalDate 来表示模型中的各种日期,并将这些日期存储在 sessionStorage 中。是否有一种通用的首选方法来存储这些日期,以便它们可以序列化/反序列化,而无需向包含它们的每个对象添加特殊代码?
我们一直在使用标准JSON.stringify
/JSON.parse
来执行此操作,但是由于LocalDate
在字符串化时转换为 ISO 字符串,因此当我们将其LocalDate
解析回来时会丢失其类型。
如此处所示
这是摘要:
const myObj = { a: "thing", d: LocalDate.parse('2019-01-20') };
const stringified = JSON.stringify(myObj);
const parsed = JSON.parse(stringified);
// this fails because d is no longer a LocalDate
console.log(parsed.d.year());
我们现在的解决方法是为任何包含 LocalDate 的类提供自定义反序列化器,但这似乎有点笨拙。
为此寻求更清洁的解决方案。%o
也许我们可以为 LocalDate 制作一个通用的序列化器,它输出与console.log 中的修饰符相同的东西?
mydate -> serialize -> "LocalDate { _year: 2019, _month: 1, _day: 20}"
在我们这样做之前,我想看看这是否已经干净地完成了,或者我是否只是遗漏了一些明显的东西。