gpt4 book ai didi

scala - 当字段不完整时用 Circe 解码 Json

转载 作者:行者123 更新时间:2023-12-01 15:30:40 24 4
gpt4 key购买 nike

我有一个json格式的成绩单,里面有一堆单词

{
"words": [{
"duration": 123,
"name": "world"
"time": 234,
"speaker": null
}]
}

我一直在使用 Circe 来编码/解码 Json。在这种特殊情况下:

import io.circe.generic.auto._
import io.circe.parser._

val decoded = decode[Transcript](transcriptJson)

我的 ADT 看起来像:

case class Word(
duration: Double,
name: String,
time: Float,
para: String,
speaker: Option[String],
key: Option[String] = None,
strike: Option[String] = None,
highlight: Option[String] = None
)

case class Transcript(words: List[Word])

有时单词有“strike”或“highlight”这样的键,但很可能没有。如果没有,我会收到以下错误消息。

Left(DecodingFailure([A]List[A], List(DownField(highlight), MoveRight, MoveRight, MoveRight, MoveRight, MoveRight, MoveRight, MoveRight, MoveRight, MoveRight, MoveRight, MoveRight, MoveRight, MoveRight, MoveRight, MoveRight, MoveRight, MoveRight, MoveRight, MoveRight, MoveRight, MoveRight, MoveRight, MoveRight, MoveRight, MoveRight, MoveRight, MoveRight, MoveRight, MoveRight, MoveRight, MoveRight, MoveRight, MoveRight, DownArray, DownField(words))))

当“单词”不包含所有字段时,正确解码它的最佳方法是什么?

最佳答案

正如 Travis Brown 在 Gitter 上指出的那样:

“这将按原样使用 generic-extras:”

import io.circe.generic.extras.Configuration

implicit val config: Configuration = Configuration.default.withDefaults

(加上 para 的默认值和 import io.circe.generic.extras.auto._)

关于scala - 当字段不完整时用 Circe 解码 Json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46474517/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com