如何生成最小尺寸 Javascript 对象?

How to generate minimum-size Javascript object?

如何创建 Javascript 对象的最小尺寸 Javascript 序列化?本质上是一个 JSON.stringify 删除了所有不必要的引号。 (只需要支持基本的 JSON 数据类型,不支持日期等)

例如,JSON:

{
  "pi": 3.14,
  "e!": 4.26
}

会变成:

{pi:3.14,"e!":4.26}

编辑:结果无效有效JSON,但有效Javascript.

从复制并修改:

function stringify(obj_from_json) {
  if (typeof obj_from_json !== "object") {
    return JSON.stringify(obj_from_json);
  } else {
    if (Array.isArray(obj_from_json)) {
      // if the array contains an object
      var arr = [];
      for (var i = 0, len = obj_from_json.length; i < len; i++) {
        arr.push(stringify(obj_from_json[i]));
      }
      return "[" + arr.join(",") + "]";
    } else {
      var props = Object
        .keys(obj_from_json)
        .map(function(key) {
          return (new RegExp(/^[1-9a-zA-Z_$][a-zA-Z0-9_$.]*$/).test(key) ? key : "\"" + key + "\"") + ":" + stringify(obj_from_json[key]);
        }).join(",");
      return "{" + props + "}";
    }
  }
}


console.log(stringify({
  "pi": 3.14,
  "e!": 4.26
}));

console.log(stringify([{
  "adjacencies": [{
    "nodeTo": "graphnode2",
    "nodeFrom": "graphnode1",
    "data": {
      "$color": "#557EAA"
    }
  }],
  "data": {
    "$color": "#EBB056",
    "$type": "triangle",
    "$dim": 9
  },
  "id": "graphnode1",
  "name": "graphnode1"
}, {
  "adjacencies": [],
  "data": {
    "$color": "#EBB056",
    "$type": "triangle",
    "$dim": 9
  },
  "id": "graphnode2",
  "name": "graphnode2"
}]));

console.log(stringify({1: 2}));
console.log(stringify({"000": 42}));
console.log(stringify({1.26: 42}));

编辑:添加了对象数组支持。 编辑:固定数组转换。