2015-07-23 32 views
8

A seguito di questo articolo https://github.com/FasterXML/jackson-module-scala/wiki/EnumerationsJSON serializzazione di enumerazioni Scala utilizzando Jackson

La dichiarazione enumerazione è come

object UserStatus extends Enumeration { 
    type UserStatus = Value 
    val Active, Paused = Value 
} 

class UserStatusType extends TypeReference[UserStatus.type] 
case class UserStatusHolder(@JsonScalaEnumeration(classOf[UserStatusType]) enum: UserStatus.UserStatus) 

Il DTO è dichiarato come

class UserInfo(val emailAddress: String, val userStatus:UserStatusHolder) { 

} 

e il codice di serializzazione è

val mapper = new ObjectMapper() 
mapper.registerModule(DefaultScalaModule) 

def serialize(value: Any): String = { 
    import java.io.StringWriter 
    val writer = new StringWriter() 
    mapper.writeValue(writer, value) 
    writer.toString 
} 

La serializzazione JSON risultante è

{ 
    "emailAddress":"[email protected]", 
    "userStatus":{"enum":"Active"} 
} 

E 'possibile ottenerlo il seguente modulo?

{ 
    "emailAddress":"[email protected]", 
    "userStatus":"Active" 
} 

risposta

4

Hai provato: esempio

case class UserInfo(
    emailAddress: String, 
    @JsonScalaEnumeration(classOf[UserStatusType]) userStatus: UserStatus.UserStatus 
) 

del wiki Jackson è un po 'fuorviante. Non hai bisogno della classe holder. È solo un esempio di una cosa che ha quell'elemento. La cosa di cui hai bisogno è l'annotazione

+0

Funziona alla grande. Grazie :-) – sriram

Problemi correlati