簡體   English   中英

為什么 JSON.parse 失敗而 eval() 像魅力一樣工作?

[英]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 - 它在您收到的錯誤消息中如此說明。

錯誤指向來自這部分modesm

"subclass":13,modes:{"mode":458752,

您還缺少一些引號; 你可能想看看。


eval執行作為字符串傳入的 JavaScript 代碼——就好像您已經在運行函數的地方用代碼編寫了它。 由於您的字符串是有效的 JavaScript,因此它可以正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM