让JavaScript分析器做到这一点:
你可以用一个字符串(根据编辑的问题)做的非常相同的方式
a = {
filed: { // comments
n: 1 /* multi-line ...
comments */
},
field2: " // comments in string , /* here */ "
}
a.toSource()
/*
({filed:{n:1}, field2:" // comments in string , /* here */ "})
*/
:
a = 'a = {\r\n filed: { // comments n: 1 \r\n/* multi-line ... comments */\r\n},\r\n'
+ 'field2: " // comments in string , /* here */ "\r\n}'
eval(a).toSource().toString();
但它似乎没有与铬合作?哦,忘了,它只是FF,对不起(在Javascript版本3)。
我在https://gist.github.com/archan937/1961799找到替代品,所以以下几种浏览器中的大多数都可以使用。
function inspect(object) {
switch (typeof(object)) {
case "undefined":
return "undefined";
case "string":
return "\"" + object.replace(/\n/g, "\\n").replace(/\"/g, "\\\"") + "\"";
case "object":
if (object == null) {
return "null";
}
var a = [];
if (object instanceof Array) {
for (var i in object) {
a.push(inspect(object[i]));
};
return "[" + a.join(", ") + "]";
} else {
for (var key in object) {
if (object.hasOwnProperty(key)) {
a.push(key + ": " + inspect(object[key]));
}
};
return "{" + a.join(", ") + "}";
}
default:
return object.toString();
}
};
a = 'a = {\r\n filed: { // comments n: 1 \r\n/* multi-line ... comments */\r\n},\r\n'
+ 'field2: " // comments in string , /* here */ "\r\n}'
alert(inspect(eval(a)));
为什么你在json中有评论?那个json是无效的... – taxicala
更新了问题@taxicala –
如果你想要去正则表达式路由,'(\/\ * [\ S \ s] *?\ * \ /)|(\/\/[^ \ n] *)'可能会工作:https://regex101.com/r/fJ1aC6/1 – lintmouse