2014-06-23 2 views
1

Compte tenu de l'extrait de code suivant ...Play: création conditionnelle JSON

val selector = if (condition == true) 
    Json.obj("id" -> userId, "country" -> country) 
else 
    Json.obj("id" -> userId) 

... est-il une meilleure – et plus élégante façon – faire la même chose?

+2

Cela semble "bien" pour l'exemple donné, en dépit de la vérification explicite stupide de '== true'. – user2864740

+0

Je voulais juste éviter la répétition sur la partie id ... – j3d

+0

Les combinateurs JSON et 'writeNullable' seraient meilleurs, à mon avis, étant donné que vous travaillez dans Play. –

Répondre

1

OK, voici la solution:

import play.api.libs.json._ 
import play.api.libs.functional.syntax._ 

val userWrites = (
    (__ \ 'id).write[String] ~ 
    (__ \ 'country).writeNullable[String] 
).tupled 

val json: JsValue = userWrites.writes(
    "1234", 
    if (condition == true) Some("Germany") else None 
) 

J'espère que ça aide.

Questions connexes