F#json解析器无法识别浮点数

时间:2018-02-25 14:56:51

标签: json f# f#-data

我在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

我做错了什么?

1 个答案:

答案 0 :(得分:1)

"float": 1.0属性的示例输入技术上是一个整数(在数字意义上),即使你在其中加了小数位。

  

通常,提供商支持(并按此顺序优先选择):intint64decimalfloat

这会使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