我有用户提供JSON的CLI应用程序。我需要检查JSON是否有效。 我发现服用点这样可以极大的工作:检查JSON LIKE字符串是否有效 - JS正则表达式
function isJsonValid(str) {
try {
JSON.parse(str);
} catch (e) {
return false;
}
return true;
}
但是当我调试我的应用我注意到,有从命令所有"
和'
和spaces
被剥离了一点问题。 所以JSON为:
{
"key1": "value1",
"key2": "value2"
}
改变的东西如:
{key1:value1,key2:value2}
我需要一个正则表达式将检查该剥离JSON是有效的莫名其妙。
所以结果应该看起来像:
re.test({key1:value1,key2:value2}) // true
re.test({key1:value1}) // true
re.test({key1:value1,}) // false, extra comma
re.test({key1:value1, key2}) // false, missing value of key2
re.test({key1:value1, key2:value2) // false, missing closing }
re.test({key1:value1, key2:value2}}) // false, extra closing }
有人可以帮我与正则表达式的一部分?不幸的是,这不是我的强项。
的“剥离” JSON不再是JSON,但如果这是你输入你想验证它作为是,你刚需要测试只显示顶级“key:value”对的简单情况,还是必须允许嵌套对象和/或数组? – nnnnnn
是的,会有没有嵌套的数组。所以我需要测试JSON是否如下所示:'{' - 开头括号,'key' +':'+'value' +右括号'}''key:value'部分可以重复多次,并且应该分开用逗号 – Andurit
???我在这里错过了重要的东西吗?如果函数返回'true',则传递的JSON有效,如果返回'false',则发生错误,并且JSON无效。为什么要麻烦重新检查? – Teemu