我正在研究图书馆zio-kafka
,我想用zio-json
JSON 格式反序列化消息的值。
我有一个简单的案例类及其解码器和编码器:
case class Player(name: String, score: Int)
object Player {
implicit val decoder: JsonDecoder[Player] = DeriveJsonDecoder.gen[Player]
implicit val encoder: JsonEncoder[Player] = DeriveJsonEncoder.gen[Player]
}
现在,我创建了一个使用上述解码器/编码器的Serde
从 a 开始:Serde.string
val playerSerde: Serde[Any, Player] = Serde.string.inmapM { playerAsString =>
ZIO.fromEither(playerAsString.fromJson[Player].left.map(new RuntimeException(_)))
} { playerAsObj =>
ZIO.effect(playerAsObj.toJson)
}
这是对的吗?还有其他(更好的)方法吗?