1

Play2.1パーサーでJSON応答を解析するのに問題があります。次のjsonを文字列として受け取ったとします。

{"名前":"myName"}

私はこれらの数行を使用してそれを解析することができます...

case class MyJsonObj(name: String)
implicit val jsonRead = (
  (__ \ "name").read[String])(MyJsonObj.apply _)
val myObj = Json.parse("{\"name\": \"myName\"}").valide[MyJsonObj]

ここで、ほぼ同じメッセージを受信するとしますが、 "myName"として文字列を取得する代わりに、null(つまり、{"name":null})を受信すると、解析が失敗します...理想的には、nullを受信するたびに(エラーを発生させる代わりに)デフォルト値を設定し、解析を続けるのが好きです。

助言がありますか?ありがとう!

4

1 に答える 1

2

readNullableまたはでこれを達成できますorElse

(__ \ 'name).readNullable[String].map(_.getOrElse("default"))
// Another solution:
(__ \ 'name).read[String] orElse Reads.pure("default")

注:リーダーは「1フィールド」のケースクラスではうまく機能しません(ただし、これはこの例のためだけだと思います)。それ以外の場合は、このトピックを参照してください。

于 2013-01-28T19:27:27.297 に答える