在play scala中创建自定义json定义

时间:2019-06-25 20:10:47

标签: scala playframework play-json

我是Scala的新手,正在学习Scala和Play框架: 我试图通过使用Map(...)List(...)Json.toJson(...)从名为“ tables”的数据序列开始动态创建具有播放/缩放的Json。 我的结果应该类似于下面显示的代码resultCustomJsonData

var resultCustomJsonData = [
  {
    text: "Parent 1",
    nodes: [
      {
        text: "Child 1",
        nodes: [
          {
            text: "Grandchild 1"
          },
          {
            text: "Grandchild 2"
          }
        ]
      },
      {
        text: "Child 2"
      }
    ]
  },
  {
    text: "Parent 2"
  },
  {
    text: "Parent 3"
  },
  {
    text: "Parent 4"
  },
  {
    text: "Parent 5"
  }
];

我的scala代码如下:

val customJsonData = Json.toJson(
      tables.map { t => {
        Map(
          "text" -> t.table.name.name, "icon" -> "fa fa-cube", "nodes" -> List (
              Map( "text" -> "properties" )
          )
        )
      }}
    )

但我遇到此错误:

No Json serializer found for type Seq[scala.collection.immutable.Map[String,java.io.Serializable]]. Try to implement an implicit Writes or Format for this type.

2 个答案:

答案 0 :(得分:1)

我认为您应该尝试实现自定义序列化器/写入器。选中here

例如:

  implicit val userWrites = new Writes[User] {
    def writes(user: User) = Json.obj(
      "id" -> user.id,
      "email" -> user.email,
      "firstName" -> user.firstName,
      "lastName" -> user.lastName
    )
  }

答案 1 :(得分:1)

这是一种无需使用临时imageio.imwrite('example.png', image) 的方式:

Map