la sérialisation des objets json avec le jeu.l'api.libs.json
Je suis en train de sérialiser certains relativement simple des modèles en json. Par exemple, je voudrais obtenir la représentation json de:
case class User(val id: Long, val firstName: String, val lastName: String, val email: Option[String]) {
def this() = this(0, "","", Some(""))
}
Dois-je écrire mon propre Format[Utilisateur] avec le lit et écrit les méthodes ou est-il un autre moyen? J'ai regardé https://github.com/playframework/Play20/wiki/Scalajson mais je suis encore un peu perdu.
OriginalL'auteur LuxuryMode | 2012-08-16
Vous devez vous connecter pour publier un commentaire.
Oui, l'écriture de votre propre
Format
instance est l'approche recommandée. Compte tenu de la classe suivante, par exemple:L'instance pourrait ressembler à ceci:
Et que vous souhaitez utiliser comme ceci:
Voir la documentation pour plus d'informations.
Jouer est livré avec un exemple pour
Seq
, de sorte que vous pouvez simplement utiliserJson.toJson(users).as[Seq[User]]
.À l'aide d'une pièce de théâtre
JsNumber
avec Mongo, j'obtiens une erreur de sérialisation:[error] play - Cannot invoke the action, eventually got an error: java.lang.IllegalArgumentException: can't serialize class scala.math.BigDecimal
Ne fonctionne plus,
def reads(user: User) = JsResult[…]
, il ne peut pas êtredef reads(user: User) = User(…)
C'est hors de date pour Jouer 2.4, quelqu'un peut-il fournir une mise à jour?
OriginalL'auteur
Grâce au fait que l'Utilisateur est une classe de cas, vous pourriez aussi faire quelque chose comme ceci:
sans écrire votre propre Format[Utilisateur]. On pourrait faire la même avec lit:
Je n'ai pas trouvé dans les docs, voici le lien vers l'api: http://www.playframework.com/documentation/2.2.x/api/scala/index.html#play.api.libs.json.Json$
Json.reads[User].reads(myJson).get
Celui-ci devrait maintenant être marqué comme réponse. Voici le lien pour la mise à jour de la doc: playframework.com/documentation/2.5.x/ScalaJsonAutomated
OriginalL'auteur