1
我喜歡在我的案例類中使用casecodecN
或無定形解碼器,但是其中一個字段在使用json時具有不同的類型。Argonaut解碼器如何更改案例類別中一個值的類型
考慮,其中b
在json中是一個類似於"1.23"
的字符串,但我希望它是Double。
case class Foo(a: Double, b: Double)
如果我使用casecodec2就會報錯,因爲b
是一個字符串
casecodec2(Foo.apply, Foo.unapply)("a", "b")
所以我必須手動寫DecodeJson
DecodeJson[Foo](
c =>
for {
a <- (c --\ "a").as[Double]
b <- (c --\ "b").as[String].map(_.toDouble)
} yield Foo(a, b)
)
這是確定短期case類,但繁瑣對於更大的。
有沒有辦法我使用派生解碼器的情況下,但只改變一個值類型?
感謝
謝謝你,這是一個不錯的選擇。但是,如果我這樣做,不清楚哪個字段可以有字符串雙打。如果'a'格式化,我仍然希望它成爲解碼失敗。 – Stephen