我有一个简单的case类来模拟Http响应:
case class Other(name: String, age: Int)
case class MyResponse(id: String, name: String, others: List[Other])
我为他们设计了解码器:
implicit val decoderOther: Decoder[Other] = deriveDecoder[Other]
implicit val decoderMyResponse: Decoder[MyResponse] = deriveDecoder[MyResponse]
但是当我在sttp
http客户端上调用它时:
basicRequest.(...).get(...).response(asJson[MyResponse].getRight).send(backend).map(_)
我得到一个Desarialization
错误:
sttp.client3.DeserializationException: DecodingFailure at .id Missing required field
我不知道为什么它不能被正确解析。解码器看起来很好。当我把MyResponse
改为circe
Json类时,它工作得很好:
Response([{ "id": "121", "name": "test", "others": [] }])
但我想把它解析成我的模型,你能帮我吗
1条答案
按热度按时间xtfmy6hx1#
如果您写入
asJson[MyResponse]
,则需要Encoder
而不是Decoder
。所以加上
您可以将
Encoder
和Decoder
替换为Codec
x一个一个一个一个x一个一个二个x
https://scastie.scala-lang.org/DmytroMitin/W3wgn0gbRXyA1vRI6OyoUg/1
如果您仍然遇到问题,请准备MCVE。