gpt4 book ai didi

ruby-on-rails - 渲染包含 Float::NAN 对象的哈希时,Rails 返回无效的 JSON

转载 作者:数据小太阳 更新时间:2023-10-29 08:17:41 26 4
gpt4 key购买 nike

我正在为 Rails Controller 调用返回 JSON。在 Controller 中,我需要从包含 NaN 对象的 Ruby 散列生成 JSON。返回 JSON 时浏览器显示错误:

{
"value": NaN
}

Error: Parse error on line 1: "value": NaN

我做了一些快速研究,似乎 NaN 不是有效的 JSON 对象,因此应该用引号引起来 - “NaN”。 Rails JSON 解析器不符合标准 JSON 格式并将 NaN 对象用引号括起来,这看起来很愚蠢。

我尝试将散列展平为字符串并将其转换回散列。但我一直遇到解析错误。

我该如何解决这个问题?


编辑:

为了简化问题,散列看起来像这样:

{ "value" => Float::NAN }

编辑 2:

我需要将上面的哈希值转换成下面的 json:

{
"value": "NaN"
}

最佳答案

啊,我想通了 - 这大约在 10 个月前在 Rails 主分支中得到修复。 (https://github.com/rails/rails/commit/7b53d1372df4bbc7a539b5e493ff1491ec460397)

要为您的 Rails 3.2.3 修复它 <,只需添加以下代码:

class Float
def as_json(options = nil) finite? ? self : NilClass::AS_JSON end #:nodoc:
end

关于ruby-on-rails - 渲染包含 Float::NAN 对象的哈希时,Rails 返回无效的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11090288/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com