【问题标题】:Json data containing NaN results in error during ajax requestajax请求期间包含NaN的Json数据导致错误
【发布时间】:2013-09-25 13:31:37
【问题描述】:

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

"[{"SomeId":1,"SomeName":"Some name 1","Parameter1":1.13,"Parameter2":3.0 ...

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

"[{"SomeId":1,"SomeName":"Some name 1","Parameter1":1.13,"Parameter2":NaN ...

如果返回这种类型的数据,则会触发错误回调。

这是一个已知问题吗? jquery 或 web api 是罪魁祸首吗?我怎样才能减轻这种情况?谢谢。

【问题讨论】:

  • 检查浏览器开发工具的网络选项卡中的响应,以查看是否从服务器发送 NaN。您是在做任何有趣的事情来构建响应,还是只是让 Web API 来做?
  • Web api 构建它...

标签: jquery json asp.net-web-api json.net


【解决方案1】:

这是因为令牌 NaNJSON 中无效。 JSON 是 JavaScript 对象初始化语法的一个子集,它不包括它的多个方面,包括 NaN(和 Infinityundefined、...)。

提供该输出的 Web API 正在生成无效的 JSON,因此任何符合标准的 JSON 解析器都会抱怨它。您需要修复(或要求其提供者修复)API。

【讨论】:

  • 谢谢。谷歌告诉我这样的事情。这对我来说仍然没有意义。归根结底,JSON 包含键值对。为什么 NaN 不被视为字符串?还是 JavaScript 的对象初始值设定项会查找这些“关键字”并吐出它的虚拟对象?
  • @csetzkorn: “为什么 NaN 不被视为字符串?” 为什么?它不在引号中。 “或者 JavaScript 的对象初始化器会查找这些“关键字”并吐出它的虚拟对象吗?” NaN 是 JavaScript 关键字,是的;它不是 JSON 关键字。 JSON 不是 JavaScript,JSON 是 JSON,一种用于数据交换的文本表示法基于 JavaScript 对象初始化器语法,但与它不同。
  • 谢谢。请原谅关于“假人”的双关语(-:
猜你喜欢
  • 2018-08-13
  • 2017-09-10
  • 1970-01-01
  • 2015-09-05
  • 1970-01-01
  • 2014-03-20
  • 2016-12-14
  • 2017-04-15
  • 2011-03-02
相关资源
最近更新 更多