我在f#项目中尝试了json fsharp.data。 但似乎json解析器无法识别浮点数。
open FSharp.Data
type Simple = JsonProvider<"""
{ "float": 1.0, "int":1, "string": "xxx" }
""">
let input = Simple.Parse("""
{ "float": 12.3, "int":234, "string": "string" }
""")
printfn "%A %A %A" input.Float input.Int input.String
// the float seems to be read as an int
我做错了什么?
答案 0 :(得分:1)
"float": 1.0
属性的示例输入技术上是一个整数(在数字意义上),即使你在其中加了小数位。
通常,提供商支持(并按此顺序优先选择):
int
,int64
,decimal
和float
。
这会使JsonProvider
推断"float"
为decimal
类型:
type Simple = JsonProvider<"""
{ "float": 1.1, "int":1, "string": "xxx" }
""">
这会使JsonProvider
推断"float"
为float
类型,因为它对decimal
来说太大了:
type Simple = JsonProvider<"""
{ "float": 1314814912414812342456456456456456456433333313148149124148123424564564564564564564333333.0, "int":1, "string": "xxx" }
""">
有关JsonProvider
如何从JSON样本中推断数据类型的更多信息,请参阅documentation。