【发布时间】:2014-11-27 07:45:01
【问题描述】:
我需要从其他 API 获取 json 字符串,并且该字符串可能是也可能不是有效的 JSON 字符串。如何检查 JSON 字符串是否有效,如果无效,如何使其有效?我要问的是是否有某些字符需要转义,如果它们没有转义,那么我们在解析时会出错。我们有任何 API 可以使 JSON 字符串有效吗?
我得到了检查 JSON 字符串是否有效的代码
Javascript
if (/^[\],:{}\s]*$/.test('{section : "ABCDEFGHI"JKLMNOP"}'.replace(/\\["\\\/bfnrtu]/g, '@').
replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').
replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
console.log('valid');
}else{
console.log('Not a valid');
}
【问题讨论】:
-
“我们有任何 API 可以使 json 字符串有效吗?” 不是内置的。看来您已经知道如何检查它是否有效(since you got the code from here)。那么,让它对你的实际问题有效吗?
-
@loangburger 可能,但我需要一种方法使其有效。
-
使其有效并非易事,因为并不总是有唯一的解决方案。以
"foo\c"为例。它不是有效的 JSON,因为\c是无效的转义序列。但我的意思是写"fooc"或"foo\\c"甚至可能是"foo\nc"吗?在考虑如何使 JSON 有效之前,您必须想出一些规则。然后你可以实现你自己的解析器来处理它。 -
然后更改问题的标题以更好地反映您的问题。
标签: javascript json validation