使用瑟茜,這是很容易的Json的情況下,類解碼:在Circe中解碼未使用的值是否是一種警告方式?
import io.circe._, io.circe.generic.auto._, io.circe.parser._, io.circe.syntax._
case class Bar(xs: List[String])
scala> decode[Bar]("{\"xs\":[\"a\",\"b\"]}")
res2: Either[io.circe.Error,Bar] = Right(Bar(List(a, b)))
scala> decode[Bar]("{\"xs\":[\"a\",\"b\"],\"addedField\":true}")
res3: Either[io.circe.Error,Bar] = Right(Bar(List(a, b)))
但我可以看到一個方法來檢查是否所有的領域都得到了使用和結果映射。
目前,檢查一個方式,如果有些信息已經丟失是重新轉換的結果和JSON差異比較的jsons(與Json4)
scala> val Diff(_,_,removed) = parse(input) diff parse(result.asJson.noSpaces)
removed: org.json4s.JsonAST.JValue = JObject(List((addedField,JBool(true))))
val noLoss = removed == JNothing
有沒有一種方法,以直接在瑟茜?
謝謝,這很有道理。它可能會減少一半的表現,但它組成非常好。對於嵌套結構(超出了curent問題的範圍),它只需要創建一個類型類'''JsonPaths''來代替''FieldNames'''來過濾掉這些路徑。 – jwinandy