Scala Play框架表单绑定为映射[字符串,双精度]

Scala Play框架表单绑定为映射[字符串,双精度],scala,playframework,playframework-2.0,Scala,Playframework,Playframework 2.0,我遇到了一个非常简单的问题: 使用Play framework和Scala,我想创建一个表单,基本上将我的请求映射到一个map[String,Double]: val repartitionForm = Form( tuple( "date" -> date, "map" -> ??? )) 我收到的json格式如下: {"date":"yyyymmdd","map":{"key": 12.3, "anotherKey" : 89.3}} 我想补充一点,这些键是动态的,

我遇到了一个非常简单的问题: 使用Play framework和Scala,我想创建一个表单,基本上将我的请求映射到一个map[String,Double]:

 val repartitionForm = Form(
tuple(
  "date" -> date,
  "map" -> ???
))
我收到的json格式如下:

{"date":"yyyymmdd","map":{"key": 12.3, "anotherKey" : 89.3}}
我想补充一点,这些键是动态的,因此事先不知道

可能吗?如果没有,你能给我一些提示我如何才能做到这一点吗


感谢您的帮助

您是在寻找一种映射动态字段的表单还是如何从JSON blob映射动态键?Play希望函数从未打包字段的元组映射到您的映射,从您的映射到元组选项,所以您可以提供它,但它似乎有点像样板,我不知道获取映射的简单解决方案,也许有一个。您还可以做的是创建一个具有有意义的名称和字段的case类,并在其中传递apply/unapply方法@Łukasz,我有一个case类,但我不知道如何将我的映射反序列化到其中!因此,如果您想从表单字段绑定映射,您需要“FieldMapping[map[String,Double]]”,它可以使用Forms.of[T]方法创建,并在作用域中使用隐式格式化程序[T]。您需要为映射实现此格式化程序。有关示例,请查看play.api.data.format.format.scalaThanks,以获取您的答案。Łukasz,我正在考虑这样做。另外,因为它是一个Forms.of[T]返回一个字段映射,所以不可能将它设置在根级别:(令人惊讶的是,这种特性没有现成提供。我还想强调的是,它可能并不那么令人惊讶,因为它是一个“form”validation util和表单中的所有字段都应该是已知的。您是在寻找一个映射动态字段的表单还是如何从JSON blob映射动态键?Play希望函数从解包字段的元组映射到您的映射,从映射到元组的选项,所以您可以提供它,但它看起来像是一个样板,我不知道下面是一个获取映射的简单解决方案,可能有一个。您还可以做的是创建一个具有有意义的名称和字段的case类,并在其中传递apply/unapply方法。我已经更新了我的问题,以便更清楚!@ukasz,我有一个case类,但我不知道如何将我的映射反序列化到其中!因此,如果您想从表单字段绑定映射,您需要'Fiel'dMapping[Map[String,Double]`可以使用Forms.of[T]方法创建,作用域中包含隐式格式化程序[T]。您需要为映射实现此格式化程序。例如,请检查play.api.data.format.format.scalaThanks以获得您的答案Łukasz,我正在考虑这样做。另外,因为它是一个Forms.of[T]返回一个字段映射,无法将其设置为根级别:(令人惊讶的是,这种功能没有现成提供。我还想强调的是,这可能并不奇怪,因为它是一个“表单”验证util,在表单中,所有字段都应该是已知的。