有一个node.js应用程序正在接收包含文字NaN的JSON数据字符串,例如
然后,您的NodeJS应用程序 不
接收JSON,而是接收模糊的类似于JSON的文本。
NaN不是有效的JSON令牌。
三种选择:
1.获取源以正确生成JSON
这显然是首选课程。数据不是JSON,应该修复,这将解决您的问题。
2. NaN
以一种简单的方式容忍:
您可以
null在解析之前将其替换为,例如:
var result = JSON.parse(yourString.replace(/bNaNb/g, "null"));
…然后处理
null结果中的。但这很简单,不允许字符
NaN出现在字符串中的某个位置。
或者,旋转Matt Ball的
reviver想法 (现已删除)
,您可以将其更改为特殊的字符串(例如
"***NaN***"),然后使用齐整器将其替换为real
NaN:
var result = JSON.parse(yourString.replace(/bNaNb/g, '"***NaN***"'), function(key, value) { return value === "***NaN***" ? NaN : value;});…但是,假设字符
NaN从未出现在适当的位置,这同样具有思维简单的问题。
3.使用 (颤抖!) eval
如果您知道并信任此数据的来源,并且不可能在传输过程中对其进行篡改
,则可以使用
eval而不是来解析它
JSON.parse。由于
eval允许使用完整的Javascript语法(包括)
NaN,因此有效。希望我对用户的警告足够大胆,使他们理解我只会在非常,非常,
非常 小的情况下建议这样做。但是同样,请记住
eval允许任意执行代码,因此,如果字符串有被篡改的可能性,请不要使用它。



