2
在Argonaut中,如果在case類包含Either的情況下,如何輕鬆地重命名相應的JSON屬性名稱。Argonaut.io:如何在包含任何類的情況下重命名json屬性Right/Left
例如,給出這樣的定義:
case class Foo(f: String)
case class Bar(b: String)
case class FooBar(e: Either[Foo, Bar])
implicit def FooCodecJson: CodecJson[Foo] = casecodec1(Foo.apply, Foo.unapply)("f")
implicit def BarCodecJson: CodecJson[Bar] = casecodec1(Bar.apply, Bar.unapply)("b")
implicit def FooBarCodecJson: CodecJson[FooBar] = casecodec1(FooBar.apply, FooBar.unapply)("e")
轉換FooBar
以JSON像FooBar(Right(Bar("hello"))).asJson.spaces4
結果如下:
{
"e" : {
"Right" : {
"b" : "hello"
}
}
}
什麼是重命名「正確」的東西最簡單的方法在上面的輸出中更有意義? (我的實際情況有很多case類與許多Eithers,所以我在尋找可能的最簡潔的方式。)