[英]JSON.parse throws errors while eval doesn't on the same strings. Why?
假設我有類似的東西
var a = '["\t"]'
如果我做
eval('var result = ' + a)
一切正常。 但是如果我這樣做
var result = JSON.parse(a)
它引發錯誤:意外的令牌。
\\ b,\\ f也會發生同樣的情況:與eval一起使用,而與JSON.parse失敗。 為什么? 遇到“ \\ t”時,解析器的行為方式是否相同?
另一方面,eval和JSON.parse都失敗,並帶有\\ n(如預期的那樣),但是它們也都失敗,都帶有\\ r。 為什么是這樣?
我對這一切有點困惑,所以有人可以解釋發生了什么嗎? 如果可能的話,提供詳細信息:兩種情況下解析器的行為如何?
那是因為它不是有效的JSON。
不要嘗試自己編寫JSON。 相反,請使用JSON.stringify
正確編碼您的數據。
var json = JSON.stringify(["\t"]);
JSON.parse(json);
//=> ["\t"]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.