gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 22:46:55 25 4
gpt4 key购买 nike

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

例如,JSON:

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

会变成:

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

编辑:结果不是有效的 JSON,但有效的 Javascript。

最佳答案

复制自https://stackoverflow.com/a/11233515/916000并修改:

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}));

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

关于javascript - 如何生成最小尺寸的 Javascript 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58191301/

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