序列化 Javascript 代码

serialize Javascript code

本文关键字:代码 Javascript 序列化      更新时间:2023-09-26

我希望能够在mongo DB中将对象存储为代码。主要问题是在尝试存储包含类型的array时。示例:[ StringArray'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);

并再次解析到杰森 通过解析:

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}