如何在水晶中的 JSON 中解析 Int 和 Float?



Crystal JSON 抱怨它无法将 Int 转换为浮点型,下面的代码抛出异常

JSON.parse("{"v":1}")["v"].as_f

如何解析?如果某些值是 Int "1",而某些浮点数是"1.1"?

Crystal 在这里对类型相对严格。你必须更加明确。

选项 1.

实现您自己的方法。我建议使用不同的名称。

struct JSON::Any
def to_f : Float64?
case @raw
when Float64 then @raw.as(Float64)
when Int then @raw.as(Int).to_f
end
end
end

然后,您可以将其称为JSON.parse("{"v":1}")["v"].as_f

选项 2.

在代码中先进行检查。

my_v = JSON.parse("{"v":1}")["v"]
if my_v.as_f?
my_v.as_f
elsif my_v.as_i?
my_v.to_i.to_f
end

相关内容

  • 没有找到相关文章

最新更新