我有用戶提供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