包含NaN的Json数据在ajax请求期间导致错误

cs0*_*815 3 jquery json json.net asp.net-web-api

我是一个通过web api公开的端点,它会像这样喷出JSON:

"[{"SomeId":1,"SomeName":"Some name 1","Parameter1":1.13,"Parameter2":3.0 ...
Run Code Online (Sandbox Code Playgroud)

到jquery ajax获取请求.一切正常,直到JSON包含NaN(不是数字):

"[{"SomeId":1,"SomeName":"Some name 1","Parameter1":1.13,"Parameter2":NaN ...
Run Code Online (Sandbox Code Playgroud)

如果返回此类数据,则会触发错误回调.

这是一个已知的问题?是jquery还是web api?我该如何缓解这种情况?谢谢.

T.J*_*der 6

发生这种情况是因为令牌NaNJSON中无效.JSON是一个子集, JavaScript的对象初始化语法,这还不包括它的几个方面,包括NaN(和Infinity,undefined...).

提供该输出的Web API产生无效的JSON,因此任何符合要求的JSON解析器都会抱怨它.您需要修复(或要求其提供商修复)API.

  • @csetzkorn:*"为什么NaN不被视为字符串?"*为什么*会*它?它不在引号中.*"或者JavaScript的对象初始值设定项是否会查找这些'关键字'并吐出它的虚拟符号?"*`NaN`是一个JavaScript关键字,是的; 它*不是*JSON关键字.JSON不是JavaScript,JSON是JSON,是基于*JavaScript对象初始化语法的数据交换*的文本符号,但与它不同. (2认同)