[英]Why JSON.parse fail while eval() work like a charm?
出於某種原因,當我嘗試使用 JSON.parse() 時,這種格式化的 JSON 總是失敗。
let string = '[{"appearances":{"0":[138545,""],"1":[138547,""],"3":[138548,""]},"bonustrees":[240,241,264],"classs":2,"displayid":138545,"dps":18.67,"flags2":8192,"id":113965,"level":138,"name":"4Sorkas Chainfist","reqlevel":100,"slot":13,"slotbak":13,"source":[2],"sourcemore":[{"bd":1,"z":6967}],"specs":[269,581,260,263,577],"speed":2.60,"subclass":13,modes:{"mode":458752,"4":{"count":229,"outof":21731},"65536":{"count":28,"outof":4490},"131072":{"count":18,"outof":4719},"262144":{"count":183,"outof":3517}},count:229,stack:[1,1]}]';
console.log(eval(string)); // Output as expected from JSON.parse
console.log(JSON.parse(string)); // SyntaxError: Unexpected token m in JSON at position 341
JSON.parse
失敗,因為它只能處理 JSON 語法。 您的字符串不是有效的 JSON - 它在您收到的錯誤消息中如此說明。
錯誤指向來自這部分modes
的m
:
"subclass":13,modes:{"mode":458752,
您還缺少一些引號; 你可能想看看。
eval
執行作為字符串傳入的 JavaScript 代碼——就好像您已經在運行函數的地方用代碼編寫了它。 由於您的字符串是有效的 JavaScript,因此它可以正常工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.