Javascript Can';在JS中读取JSON对象中的属性
我已经在这个项目上努力工作了大约半个月,以便更好地进行编码。我遇到了一个问题,JSON并没有按照我希望的方式运行。当我尝试读取JSON对象的一部分时,结果几乎总是显示“未定义” 这是我将JSON存储到cookie中的代码: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
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解析回一个对象?