javascript - 如何强制 JSON.parse 抛出数字?
问题描述
我刚刚发现 JSON 可以将数字和字符串作为原始处理。我非常想知道为什么,因为我从未见过将原语与 JSON 一起使用。
但是,对我来说,使用 JSON 解析原语更可能是一个编程错误(不会被注意到),我想避免它。
例如,我可以强制以下内容抛出吗?
JSON.parse(123);
解决方案
您可以在反序列化之前包装parse
函数并检查number
参数。
(() => {
const parse = JSON.parse;
JSON.parse = function (text,reviver) {
if (typeof text === "number") throw "JSON.parse: Invalid argument type (number)";
return parse(text,reviver);
}
})();
console.log( JSON.parse(`{"prop":"Hello world!"}`) ); //OK
console.log( JSON.parse(123) ); //NOT OK
推荐阅读
- javascript - 如何更新状态然后在功能组件中渲染反应原生
- java - 使用 apache POI 读取大型 excel 文件时出现内存不足错误。任何其他选择
- python - 查找最大偶数中的返回语句
- python - 无法从 jupyter 项目打开链接
- c - 将标准输入重定向到标准输出
- openwrt - 在 CoovaChilli 中更改默认的 freeradius auth 和 acct 端口
- java - 在使用 Spring Boot 存储库时,Persistence.getPersistenceUtil 是一种更简单的测试延迟加载的 JPA 集合是否被初始化的方法吗?
- python - Python:读取excel文件但索引应该是日期时间而不是序号
- reactjs - React 开发:在 fetch 中添加 headers 属性会引发 CORS 错误
- javascript - 绘制重叠自身标记重叠的路径