在js調試時,會遇到Uncaught SyntaxError: Unexpected token o in JSON at position 1問題
obj = JSON.parse(str);
此錯誤一般是由JSON.parse()引起,代碼如上,原因一般為str實際是一個對象,而不是字符串
解決辦法,判斷str為string時再JSON.parse()轉化對象
obj = typeof(str) == "string" ? JSON.parse(str):str;
遇到的實際場景
1.在使用objTarget=JSON.parse(JSON.stringify(obj))做對象深拷貝時,obj中有一個屬性arr為字符串數組,這些字符串為json格式字符串,能被轉化為對象
經過深拷貝后,將objTarget中對應的屬性arr變為了object數組,后續使用過程中,將此屬性arr仍當做字符串數組,對數組元素使用JSON.parse就產生了此錯誤