2015-07-23 10 views
8

Nach diesem Artikel https://github.com/FasterXML/jackson-module-scala/wiki/EnumerationsJSON Serialisierung von Scala Aufzählungen Jackson mit

Die Erklärung Aufzählung ist als

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) 

Der DTO als

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

} 

und der Serialisierungscode ist

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 
} 

Die resultierende JSON Serialisierung ist

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

Ist es möglich, sie das folgende Formular zu bekommen?

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

Antwort

4

Haben Sie versucht:

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

Jackson Wikis Beispiel ein wenig irreführend ist. Sie benötigen die Klasse holder nicht. Es ist nur ein Beispiel für eine Sache, die dieses Element hat. Die Sache, die Sie brauchen, ist die Anmerkung

+0

Funktioniert gut. Vielen Dank :-) – sriram

Verwandte Themen