【发布时间】:2026-02-12 13:00:01
【问题描述】:
我想出了以下函数,用于将多行、缩进良好的 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"
}
【问题讨论】:
-
您是否正在尝试缩小 JSON?为此存在开源解决方案。
-
理想情况下,是的,它会缩小服务器端,但现在没有人有时间这样做,所以我必须有一个易于维护(即缩进、多行)的 json 文件完全按原样传递给 jQuery.ajax
-
你看过jsmin吗?您可以使用server side 和client side 两种版本。
-
jsmin 的问题在于它缩小了 javascript,但 json 只是 javascript 的一个子集,所以我敢打赌它会运行在这种情况下不需要的大量正则表达式。因此,虽然它无疑比我的函数少错误,但它可能比非错误的、单一用途的 json 缩小函数效率低。另外,我不确定您在上面发布的客户端版本的链接是客户端的 - 我能找到的所有链接都指向 C 和 .exe 文件 - 都是服务器端
-
破解打开jsmin,拿走你想要的。
标签: javascript regex json indentation