我需要在Angular应用中序列化状态,并在下次启动该应用时加载它。
问题是:
状态包含引用应保存的其他对象的对象,但是如果尝试使用JSON.stringify()
对其进行序列化,则到处都会出现循环对象引用错误。最终,我还应该有一种与其他用户共享应用程序状态的方法,例如通过url链接。
我如何解决这些问题以及如何在不丢失数据的情况下序列化引用?
提前感谢!
我唯一能想到的方法,除了使用IndexedDB之外,还很冗长。可能会有更好的解决方案,但这就是我的想法:
持续状态
一个非常基本的例子是:
原始对象结构
{
name: "John",
kids: [
{ name: "mike" },
{ name: "tracy" }
]
}
展平
{
persons: [
{ id: 1, name: "John", kids: [2,3], parent: null },
{ id: 2, name: "mike", kids: [], parent: 1 },
{ id: 3, name: "tracy", kids: [], parent: 1}
]
}
现在没有循环引用
获取状态
JSON.parse()
可能有一些工具可以帮助您。尝试遵守HATEOS或JSON:API的工具。
不太理想,但是可以,但是附带很多样板和维护