gpt4 book ai didi

javascript - 使用 javascript 将多行、缩进的 json 转换为单行

转载 作者:行者123 更新时间:2023-12-02 20:19:29 28 4
gpt4 key购买 nike

我想出了以下函数,用于将多行、良好缩进的 json 转换为单行

function(text) {
var outerRX = /((?:".*?")|(\s|\n|\r)+)/g,
innerRX = /^(\s|\n|\r)+$/;

return text.replace(outerRX, function($0, $1) {
return $1.match(innerRX) ? "" : $1 ;
});
}

任何人都可以想出更好的办法,无论是在效率方面还是在修复我的实现中存在的错误方面(例如解析时我的中断)

{
"property":"is dangerously
spaced out"
}

{
"property":"is dangerously \" punctuated"
}

最佳答案

对于这类问题,我遵循这句格言:添加正则表达式只会给你带来两个问题。这是一个足够简单的解析问题,所以这是一个解析解决方案:

var minifyJson = function (inJson) {
var outJson, // the output string
ch, // the current character
at, // where we're at in the input string
advance = function () {
at += 1;
ch = inJson.charAt(at);
},
skipWhite = function () {
do { advance(); } while (ch && (ch <= ' '));
},
append = function () {
outJson += ch;
},
copyString = function () {
while (true) {
advance();
append();
if (!ch || (ch === '"')) {
return;
}
if (ch === '\\') {
advance();
append();
}
}
},
initialize = function () {
outJson = "";
at = -1;
};

initialize();
skipWhite();

while (ch) {
append();
if (ch === '"') {
copyString();
}
skipWhite();
}
return outJson;
};

请注意,代码没有任何错误检查来查看 JSON 的格式是否正确。唯一的错误(字符串没有结束引号)被忽略。

关于javascript - 使用 javascript 将多行、缩进的 json 转换为单行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5791356/

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