2017-09-28 8 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

トラヴィス・ブラウンはギッターに指摘したように:

を "これはそのままで、一般的な-エキストラで動作します:"

import io.circe.generic.extras.Configuration 

implicit val config: Configuration = Configuration.default.withDefaults 

(プラスパラとimport io.circe.generic.extras.auto._のデフォルト値)