javascript - 尝试从内部存储数据中使用 JSON.parse 时收到错误
问题描述
我和我的同学在尝试将 JSON.parse 与来自内部存储的数据一起使用时收到以下错误消息。代码是由我们的讲师提供给我们的,所以不确定问题是什么。
内部存储应该不保存任何内容并用 0 初始化“pageViews”,或者如果内部存储中有数据,它应该是一个数组。
未捕获的 SyntaxError:在 HTMLDocument.addPageView 的 JSON.parse () 的位置 1 处的 JSON 中的意外标记 o
这是我们的代码。
const pageViewsKeyName = "pageViews";
function addPageView() {
let pageViews = localStorage.getItem(pageViewsKeyName);
let arr = [];
if (pageViews && pageViews.length > 0) {
// get the array stored in local storage at pageViewsKeyName
arr = JSON.parse(pageViews);
// now we're able to insert an item in the page view data
let newPageData = {
"path": window.location.pathname,
"timestamp": moment()
};
// now add new page data to the array
arr.push(newPageData);
// finally, we want to update our storage with the most up to date array
localStorage.setItem(pageViewsKeyName, arr);
}
}
解决方案
JSON.parse
用于将字符串 JSON 值解析为 JSON 对象。看起来pageViews
已经包含 JSON 对象。因此,您不需要解析它。你可以console.log(pageViews)
确认一下。
推荐阅读
- sql - 在三元关系中实施参照完整性
- javascript - 如何使用矩在数组中获得最近的下一次?
- java - toString方法输出的解释以及toString out和hashCode输出的区别
- python - 需要将 ssh 输出转换为 pyton 中的字典
- excel - Excel - SUM 或 SUMIF 二维数组的所有列,其中行由水平函数过滤
- python - 如何将列表中的字符串用作python中的字符串方法?
- spring - 我们可以异步使用 Spring Boot 过滤器吗?如何使用
- asp.net-mvc - 如何使用 EF6 区分日期?
- java - 如何在不重新创建的情况下显示/隐藏 BottomSheetDialogFragment?
- hive - HIVE 服务器 2 - 查询