Unexpected token o in JSON at position 1


學習es6里解構賦值的時候JSON應用的時候遇到Unexpected token o in JSON at position 1 這個錯誤

const json = {"name1":"es","price":"200"}
const {name1,price} = JSON.parse(json)
console.log(name1,price)   

發現json不是一個字符串,導致報錯。JSON.parse(里面必須是一個json字符串)
正確的寫法是,如下:

const json = '{"name1":"es","price":"200"}'
const {name1,price} = JSON.parse(json)
console.log(name1,price)   

到這里就解決了問題!

結束的時候普及一下JSON.parse()和JSON.stringify()方面的知識:

JSON.parse() 方法用於將一個 JSON 字符串轉換為對象,如:
const str = '{"name1":"es","price":"200"}'

JSON.parse(str);

//結果為一個Object

//{name1: 'es', price: '200'}

JSON.stringify() 方法是將一個JavaScript值(對象或者數組)轉換為一個 JSON字符串,如:

const a = {a:1,b:2};

JSON.stringify(a);

//結果為 '{"a":1,"b":2}'

學習到新的知識,就做個記錄吧!
一. JSON.stringify()的幾種妙用
1.判斷數組是否包含某對象,或者判斷對象是否相等
//判斷數組是否包含某對象

let data = [
    {name:'javascript'},
    {name:'vue'},
    {name:'React'},
    ],
    val = {name:'React'};
JSON.stringify(data).indexOf(JSON.stringify(val) !== -1;  // true

//判斷兩數組/對象是否相等
let a = [1,2,3],
    b = [1,2,3];
JSON.stringify(a) === JSON.stringify(b);//true

2.實現對象深拷貝
如果怕影響原數據,我們常深拷貝出一份數據做任意操作,其實使用JSON.stringify()與JSON.parse()來實現深拷貝是很不錯的選擇

//深拷貝
function deepClone(data) {
    let _data = JSON.stringify(data),
        dataClone = JSON.parse(_data);
    return dataClone;
};
//測試
let arr = [1,2,3],
    _arr = deepClone(arr);
arr[0] = 2;
console.log(arr,_arr)//[2,2,3]  [1,2,3]

3.JSON.stringify()與toString()的區別
這兩者雖然都可以將目標值轉為字符串,但本質上還是有區別的

let arr = [1,2,3];
JSON.stringify(arr);//'[1,2,3]'
arr.toString();//1,2,3


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM