Javascript 如何强制JSON.parse抛出数字?

Javascript 如何强制JSON.parse抛出数字?,javascript,node.js,json,Javascript,Node.js,Json,我刚刚发现JSON可以像原语一样处理数字和字符串。我很想知道为什么,因为我从来没有见过JSON使用原语 但是,对我来说,使用JSON解析原语更可能是一个编程错误(这将被忽略),我希望避免它 例如,我可以强制以下内容抛出吗 JSON.parse(123) 规格:您可以在反序列化之前包装parse函数并检查number参数 (()=>{ const parse=JSON.parse; JSON.parse=函数(文本,还原器){ if(typeof text==“number”)抛出“JSON.p

我刚刚发现JSON可以像原语一样处理数字和字符串。我很想知道为什么,因为我从来没有见过JSON使用原语

但是,对我来说,使用JSON解析原语更可能是一个编程错误(这将被忽略),我希望避免它

例如,我可以强制以下内容抛出吗

JSON.parse(123)


规格:

您可以在反序列化之前包装
parse
函数并检查
number
参数

(()=>{
const parse=JSON.parse;
JSON.parse=函数(文本,还原器){
if(typeof text==“number”)抛出“JSON.parse:无效参数类型(number)”;
返回解析(文本、恢复器);
}
})();
log(JSON.parse(`{“prop”:“helloworld!”}`)//好啊

log(JSON.parse(123))//不正常
您可以在反序列化之前包装
parse
函数并检查
number
参数

(()=>{
const parse=JSON.parse;
JSON.parse=函数(文本,还原器){
if(typeof text==“number”)抛出“JSON.parse:无效参数类型(number)”;
返回解析(文本、恢复器);
}
})();
log(JSON.parse(`{“prop”:“helloworld!”}`)//好啊

log(JSON.parse(123))//不正常
为什么不创建自己的解析函数并检查输入的类型?(另外,如果您使用Javascript的类型安全变体或静态类型检查器,您可以避免许多此类问题。)js将字符串化您给它的参数:
JSON.parse({toString:()=>'123'})
我同意“使用JSON解析原语更可能是编程错误”现在,您可以创建一个包装器解析器函数来检查typeofI是否可以理解数字,但字符串有什么问题?序列化JSON是一个字符串“使用JSON解析原语更可能是编程错误”-在99.9%的情况下,
JSON.parse()
用于
string
,但我相信我理解您的意思。:)为什么不创建自己的解析函数并检查输入的类型呢?(另外,如果您使用Javascript的类型安全变体或静态类型检查器,您可以避免许多此类问题。)js将字符串化您给它的参数:
JSON.parse({toString:()=>'123'})
我同意“使用JSON解析原语更可能是编程错误”现在,您可以创建一个包装器解析器函数来检查typeofI是否可以理解数字,但字符串有什么问题?序列化JSON是一个字符串“使用JSON解析原语更可能是编程错误”-在99.9%的情况下,
JSON.parse()
用于
string
,但我相信我理解您的意思。:)谢谢,我曾希望有一些内置的,但这确实回答了问题:)谢谢,我曾希望有一些内置的,但这确实回答了问题:)