今天遇到一個JSON數據轉對象失敗額問題,一開始服務返回的json就不是很干凈,開頭和結尾有換行符,明顯不符合json格式用JSON.parse肯定就報錯啦
這里告訴我們json的第一個位置的詞不是所期望的。這時先用正則替換換行符
chunk = chunk.replace(/[\r\n]/g, "")
然后再打印一下前后數據觀察
一開始直接獲取的數據,可以看到上下有好多空行

正則替換過的數據,可以看到數據和我們常見的json格式一樣了,但是轉成對象時還是報錯了,仍是一開始的錯誤提示Unexpected token in JSON at position 0
然后又把這串字符串拿出來單獨在node里和在瀏覽器里轉,都成功了!what???遇見鬼了???
深呼吸,冷靜一下,那我們先做個長度打印,將替換完后的變量長度和直接將這段字符串的打印長度比較一下看看
我們肉眼看到的字符串的長度是896,但實際變量的長度確實897,看結合報錯信息提示的是第一個字符異常,基本確定了源頭是我們看不到的那第一個字符,那看下第一個字符是啥吧,
console.log('afterRepalce', chunk, chunk.length, 'chunk[0]:', chunk[0]),打印出來看到第一個字符是空的,故此最后的原因還是返回的json數據不干凈,多了空格,再加上去除空格的正則替換就可以了
chunk = chunk.replace(/(^\s*)|(\s*$)/g, "")
眼見不一定為實, 事實上沒有那么多詭異的問題,仔細的分析目前掌握的信息,耐心的思考,交叉地校驗信息,真相終歸會浮出水面。