Javascript Can';在JS中读取JSON对象中的属性

Javascript Can';在JS中读取JSON对象中的属性,javascript,json,cookies,Javascript,Json,Cookies,我已经在这个项目上努力工作了大约半个月,以便更好地进行编码。我遇到了一个问题,JSON并没有按照我希望的方式运行。当我尝试读取JSON对象的一部分时,结果几乎总是显示“未定义” 这是我将JSON存储到cookie中的代码: var basket = '{ "basket":['+'{ "id": 0, "data-id": 3, "amount": 1 }'+'] }'; docum

我已经在这个项目上努力工作了大约半个月,以便更好地进行编码。我遇到了一个问题,JSON并没有按照我希望的方式运行。当我尝试读取JSON对象的一部分时,结果几乎总是显示“未定义”

这是我将JSON存储到cookie中的代码:

var basket = '{ "basket":['+'{ "id": 0, "data-id": 3, "amount": 1  }'+'] }';
                document.cookie = 'basket='+JSON.parse(basket)+'; max-age="604800"; path=/';
我带着:

var basket = getCookie('basket');

                    for(var i in basket) {
                        alert(basket[i]);
                    }
这是我尝试过的最后一种方法,这种方法返回“{”(即我定义它时JSON的第一个字符),这意味着它的行为就好像它是一个字符串,对吗?在一些情况下,我尝试用alert(basket[0])或alert(basket.basket[0].id)或任何东西(我尝试了无数种组合)来读取它除了只返回字符串的一部分外,它几乎总是返回“undefined”


有什么想法吗?

声明篮子对象,并在保存到cookie时使用
JSON.stringify()
方法保存它;从cookie中提取它时,使用
JSON.parse()
方法将它从字符串转换回对象

let basket = {basket:[{id: 0, dataId: 3, amount: 1  }] };
document.cookie = 'basket='+JSON.stringify(basket)+'; max-age="604800"; path=/';

function getBasketFromCookie() {
    const basketValue = document.cookie
        .split('; ')
        .find(row => row.startsWith('basket='))
        .split('=')[1];

    const basketObj = JSON.parse(basketValue);
    return basketObj;
}

const basketObj = getBasketFromCookie();
// print basket object
for (let key in basketObj) {
    console.log(basket[key]);
}
控制台输出:


basket变量包含JSON,但是您使用
JSON.parse()
返回到一个对象。为什么?您需要服务器端的JSON吗?
getCookie()
是否再次将JSON解析回一个对象?