使用List从scala对象创建Json

时间:2016-12-20 12:37:23

标签: json scala play-json

我需要创建一个包含2个元素的Json。 First元素是List,第二个元素是简单的键值对。 我的输出如下:

"{
  "tables":[
  {"table": "sn: 2134"},
  {"table": "sn: 5676"},
  {"table": "sn: 4564"},
  ],
  "paid": 219
  }" 

在示例中,第一个元素是tables,它是table的列表。第二个元素是paid

我使用play.api.libs.json lib尝试了它,但在添加第二个元素时卡住了。

我的代码如下:

 case class Input(table:String){
    override def toString = s""""table" : "sn: $table""""
  }
implicit val userFormat = Json.format[Input]
val inputsSeq = Seq(Input(table1),Input(table2),Input(table3))
val users = Json.obj("tables" -> inputsSeq)
println(users)

此代码将Json打印为:

 "{
      "tables":[
      {"table": "sn: 2134"},
      {"table": "sn: 5676"},
      {"table": "sn: 4564"},
      ]
}

我不确定,如何在这个json中添加第二个元素。任何建议如何 解决这个问题。

1 个答案:

答案 0 :(得分:0)

Json.obj接受多对(String, JsValueWrapper)作为其参数:

object Json {
  ...
  def obj(fields: (String, JsValueWrapper)*): JsObject = JsObject(fields.map(f => (f._1, f._2.asInstanceOf[JsValueWrapperImpl].field)))
  ...
}

所以你可以添加这两个元素:

val users = Json.obj("tables" -> inputsSeq, "paid" -> 219)