我应该如何在javascript中将复杂对象作为字符串保存
How should I persist complex objects as strings in javascript
我想将复杂的对象树作为字符串持久化,可以在浏览器或nodejs中工作。最明显的事情是使用 JSON.stringify 和 JSON.parse - 但是我只是获取字符串和数字等的值,但是没有存储持久化的对象类型,因此无法恢复。或者更确切地说,值被恢复,而不是函数绑定。在 JavaScript 中持久化具有方法函数的对象的正确方法是什么?
你已经可以用JSON.stringify()
和JSON.parse()
做你想做的事了。
JSON.stringify()
检查传递给它的对象的 .toJSON()
方法。因此,如果你的对象/类/任何东西实现了该方法,你可以返回你想要的任何序列化格式。这可以包括对象/类类型以及稍后反序列化它所需的其他信息。
JSON.parse()
有一个齐磊函数参数,允许您为每个解析的 JSON 值手动返回未序列化的值。
例如,在.toJSON()
中,您可能会返回一个包含数据的对象,但也返回一个设置为对象类型名称的 __objType
属性。然后在齐磊函数中,检查值是否是一个对象,以及它是否具有__objType
属性。如果是这样,那么您可以检查该属性的值并适当地反序列化它(您甚至可以在对象/类中编写一个 .fromJSON()
为您执行此操作,但与 .toJSON()
不同,.fromJSON()
没有特殊含义(。
如果您的函数通常是用于 manip/转换的静态方法,您应该能够从 JSON 数据重新初始化类。
也许你应该创建一个exportToJson
函数并importFromJson
函数,例如
function SomeClass(json) {
var base = this;
base.a = 'asdf';
base.b = 'fdsa';
base.export = function () {
return JSON.stringify({
a: base.a,
b: base.b
});
};
base.imports = function (js) {
base.a = js['a'];
base.b = js['b'];
};
if (typeof json !== 'undefined') {
base.imports(json);
}
}
(不是最优雅的解决方案,但这也是StackOverflow:p(
- 如何使用jquery读取对象字符串
- 用javascript修复这个JSON对象字符串最干净的方法是什么
- Javascript对象字符串值-在应该隐藏的时候呈现的HTML代码
- 在Nodejs中将数组转换为类似子的对象字符串
- 对象字符串转换为JSON(抛出错误)
- 如何将事件对象字符串化
- 如何在 JavaScript 中将 JSON 对象字符串化为负零
- 将 JSON 对象字符串数组转换为 JS 对象数组
- 如何在角度转换请求中将对象字符串转换为 JSON 对象
- 删除开头的双引号&结束于JSON对象/字符串或Java脚本变量
- 将json对象字符串转换为值
- 如何迭代json对象字符串
- 将数组列表转换为json对象字符串
- 如何将继承的对象字符串化为JSON
- 如何按对象字符串值之一对对象数组进行数字排序
- 解析日期对象字符串并获取以毫秒为单位的时间
- 如何在javascript中解析javascript对象字符串
- Javascript类对象字符串到对象
- 从使用.data()添加的对象字符串中获取值
- 如何在javascript中添加一个函数变量到对象字符串