如何正确读取类JSON格式Cookie中的指定布尔字段值?
嘿,我一眼就看出问题出在哪了——你拿到的CookieConsent值看起来像JSON,但其实是非标准的JSON格式!它用了单引号包裹键和字符串值,而标准JSON要求必须用双引号,所以你直接获取到的只是个普通字符串,不是JavaScript对象,访问它的属性自然会得到undefined,转成Boolean后就全是false了。
正确的处理步骤
- 用js-cookie库获取Cookie的原始字符串
- 把字符串里的所有单引号替换成双引号,转换成标准JSON格式
- 用
JSON.parse()将处理后的字符串解析成JavaScript对象 - 之后就能正常读取目标属性了
修正后的代码
// 获取原始Cookie字符串 const cookieStr = Cookies.get('CookieConsent'); // 替换所有单引号为双引号,转为标准JSON格式 const validJsonStr = cookieStr.replace(/'/g, '"'); // 解析为可操作的对象 const cookieval = JSON.parse(validJsonStr); // 现在可以正确读取各属性值了 console.log(cookieval); console.log("Necessary: " + cookieval.necessary); console.log("Preferences: " + cookieval.preferences); // 注意你之前拼写错成了Prefrences console.log("Statistics: " + cookieval.statistics); console.log("Marketing: " + cookieval.marketing);
补充说明
- 原Cookie里的
stamp值包含+号,替换单引号后不会影响JSON解析,它属于合法的字符串内容 - 我修正了你代码里的拼写错误:把
Prefrences改成了正确的Preferences
内容的提问来源于stack exchange,提问作者Learning
相关产品推荐
相关产品推荐

