Playframework 将snake_case属性读取为播放Json中的camelCase

Playframework 将snake_case属性读取为播放Json中的camelCase,playframework,playframework-2.0,Playframework,Playframework 2.0,我想在Play应用程序中将json提取为case类。case类中的属性在camelCase中定义,json数据在snake_case中提供 case class User(userId: Long, userName: String) json就是这样 {“用户名”:“Vishal”,“用户名”:67} 是否有一种简单的方法可以指示play json自动进行映射和提取,例如提供一些注释等。有关此问题的官方解决方案,请参见, 在写这封信的时候还不存在 这个游戏使用杰克逊。在Java中,您可以在

我想在Play应用程序中将json提取为case类。case类中的属性在camelCase中定义,json数据在snake_case中提供

case class User(userId: Long, userName: String)
json就是这样 {“用户名”:“Vishal”,“用户名”:67}

是否有一种简单的方法可以指示play json自动进行映射和提取,例如提供一些注释等。

有关此问题的官方解决方案,请参见,
在写这封信的时候还不存在


这个游戏使用杰克逊。在Java中,您可以在属性上使用Jackson注释
org.codehaus.Jackson.annotate.JsonProperty
手动设置名称。
参数的参数将用作键的名称

@JsonProperty("user_name")
String userName;
我不知道这在使用Scala时是否也起作用。根据本文中的注释,反序列化的语法应如下所示:

class User @JsonCreator()( @JsonProperty("user_id") val userId:Long, @JsonProperty("user_name") val userName:String )

您可以在中的case类中找到另一个Jackson注释示例。

如果您使用Play 2的JSON Inception,则不使用。如果不使用,则可以使用@JsonProperty注释

几天来,我一直在尝试使用各种形式和配置的jerkson/jackson注释将其与JSON Inception结合使用,但没有这样的运气

对于播放Json 2.x:


这似乎完全满足了我的要求,希望它能有所帮助

这是一个很老的问题,但我没有找到任何答案,所以我去Play JSON Github存储库找到了以下内容:

implicit val config = JsonConfiguration(SnakeCase)

implicit val userReads: Reads[PlayUser] = Json.reads[PlayUser]
所以,现在似乎存在一种官方的方式来做这件事


这非常有用,但仅在即将发布的2.6版本中可用。现在这是一个很好的方法,这应该是认可的答案Jackson
@JsonProperty
不适用于播放宏。因此,如果您使用Json.format[User],您应该查找@glaubercampino-answer