播放Scala Json Transfomer:将多个数组转换为单个对象数组

时间:2016-02-17 09:35:45

标签: json scala playframework

如何编写转换

的Json Transformer

{"id" : [1,2], "name":["a","b"]}idname:[ {id:1, name:"a"}, {id:2 , name:"b"}]

我正在遵循本指南实施transfomration https://www.playframework.com/documentation/2.4.x/ScalaJsonTransformers

1 个答案:

答案 0 :(得分:0)

编写通用情况变压器可能很困难。相反,您可以尝试通过MapList的标准Scala对象进行推理。以下是使用map两次执行此操作的方法:

import play.api.libs.json._

val a = Json.parse("""{"id" : [1,2], "name":["a","b"]}""").as[Map[String, List[JsValue]]]
val b = a.map {case (k, v) => v.map(k -> _)}
  .transpose
  .map(_.toMap)

Json.toJson(b)
// play.api.libs.json.JsValue = [{"id":1,"name":"a"},{"id":2,"name":"b"}]