Я использую Play-Json 2.6.3 WithDefaultValues
, как показано ниже
implicit def jsonFormatFoo = Json.using[Json.WithDefaultValues].format[Foo]
implicit def jsonFormatBar = Json.using[Json.WithDefaultValues].format[Bar]
Но это дает неожиданное поведение для:
case class Bar(name:String)
case class Foo(bars: List[Bars] = List.empty)
Теперь, еслиЯ делаю
val result = Json.parse("""{"bars":[{"name":null}]}""").validate[Foo]
println(result)
Я получаю JsSuccess(Foo(List()),)
.Я ожидал JsError(List((/bars(0)/name,List(JsonValidationError(List(error.expected.jsstring),WrappedArray())))))
, который приходит только после того, как я удаляю значение по умолчанию List.empty
.
Если у меня есть значение по умолчанию, почему JsError преобразуется в JsSuccess значения по умолчанию?Это немного не интуитивно понятно.Как мне решить это?