gpt4 book ai didi

javascript - 序列化 Javascript 代码

转载 作者:行者123 更新时间:2023-12-02 16:46:57 25 4
gpt4 key购买 nike

我希望能够将对象作为代码存储在 mongo DB 中。主要问题是当尝试存储包含类型的数组时。示例:[字符串数组'some''hello world']。保存并获取文档时我会得到

Doc.array = [undefined, undefined, 'some', 'hello world']

有没有办法序列化数组本身并将其保存在 mongo 中?像这样的东西:

var S = require('serializer');
var obj = {
cons: [[String, 'some', 'somemore']],
func: function(param, param2){
param2.some = 'bla';
}
};

var objs = S.serializer(obj);

//Store that serialized obj as a value for binary key or buffer key in mongo..
// then when getting the document...

var obj = S.deserialize(objs);
// being obj the exactly same object with the array and the function.

有没有办法做到这一点,或者有不同/更好的方法吗?

编辑

我只需要一种方法来存储 nools规则,所以问题是规则约束结构如下:

[FactType, 'alias', 'conditions']

其中 FactType 可以是字符串、对象、自定义。

最佳答案

如果它只是一个 JSON,您可以对 Json 进行字符串化:

var text=JSON.stringify(obj);

并通过解析再次解析为 Jason :

var myVar=JSON.parse(text);

如果对象中有函数,请使用它来序列化:

function objToString(obj, ndeep) {
switch(typeof obj){
case "string": return '"'+obj+'"';
case "function": return obj.name || obj.toString();
case "object":
var indent = Array(ndeep||1).join('\t'), isArray = Array.isArray(obj);
return ('{['[+isArray] + Object.keys(obj).map(function(key){
return '\n\t' + indent +(isArray?'': key + ': ' )+ objToString(obj[key], (ndeep||1)+1);
}).join(',') + '\n' + indent + '}]'[+isArray]).replace(/[\s\t\n]+(?=(?:[^\'"]*[\'"][^\'"]*[\'"])*[^\'"]*$)/g,'');
default: return obj.toString();
}
}

示例

序列化:

var text=objToString(obj); //To Serialize Object

结果:

"{cons:[[String,"some","somemore"]],func:function(param,param2){param2.some='bla';}}"

反序列化:

Var myObj=eval('('+text+')');//To UnSerialize 

结果:

Object {cons: Array[1], func: function, spoof: function}

关于javascript - 序列化 Javascript 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27045308/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com