2017-09-28 57 views
2

我有JSON格式与一堆话转录在它解码的Json与瑟茜当字段是不完全的

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

我已经使用瑟茜编码/解码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]) 

有时候话有像“罢工”或“亮点”键,但很可能不会。如果没有,我会收到以下错误消息。

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)))) 

当“单词”没有所有字段时,最好的解码方法是什么?

回答

2

由于特拉维斯布朗的Gitter指出:

“这会工作的,是仿制演员:”

import io.circe.generic.extras.Configuration 

implicit val config: Configuration = Configuration.default.withDefaults 

(加上第一个默认值,import io.circe.generic.extras.auto._