如何将JSON转换为Scala类(非Case类),然后从该大类中填充一组case类

时间:2013-02-18 02:03:02

标签: scala playframework salat

我正在使用Scala 2.10,Salat和Play frmework 2.1-RC2(将很快升级到2.1版)和MongoDB构建应用程序。

这是一个不露面的应用程序,为消费者公开JSON Web服务。到目前为止,JSON直接使用Play的Json API和隐式转换器转换为Model对象。我必须重构一些case类以避免22个元组限制,而现在而不是flat case case我现在正在重构一个嵌入式case(和嵌入式MongoDB集合)。

Web服务接口应保持相同,其中客户端仍应像以前一样在平面结构中传递JSON数据,但应用程序需要将它们映射到正确的case类结构中。什么是处理这种情况的最佳方法。我害怕写很多转换代码< - > Flat JSON< - >复杂案例类结构< - >从复杂的案例类再到平面JSON输出。

你会如何处理这样的要求?我假设案件类22元组限制可能已经被许多其他人面对处理这种要求?你会如何处理这个

1 个答案:

答案 0 :(得分:1)

Play 2.1 json库在很大程度上依赖于组合器(path1 and path2)。这些组合器都具有相同的限制。这给了你两个选择:

  1. 不要使用组合器并以艰难的方式构建对象:path(json)将为您提供路径中该点的值。在ScalaJsonCombinators搜索“访问JsPath的值”将提供更多示例。
  2. 首先将json转换为单个对象中不超过22个值的结构,然后使用常规组合子。有关转换的更多信息,请访问:ScalaJsonTransformers