当我尝试使用浮点数解码JSON文件时,Text.JSON包将数字作为JSRational提供给我。所以,我可以在JSRational上做一个readJSON。但是,我不能写有理数!这是故意的吗?
答案 0 :(得分:6)
问题的背景是JSON混淆浮点和整数类型 - 它们不是通过JSON格式的类型标记来区分的。因此,我们通过Rationals代表JSON中的所有数字类型。
转换为JSON类型的实例是为Double,Int等提供的,但不是为Rational提供的 - 尽管实际上没有充分的理由,因为实例很简单:
instance JSON Rational where
showJSON r = JSRational True r
readJSON (JSRational _ r) = return r