0

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

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

在示例中,第一个元素tables是 List of table。第二个元素是paid

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

我的代码如下所示:

 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 中添加第二个元素。任何建议如何解决这个问题。

4

1 回答 1

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)
于 2016-12-20T12:41:57.903 回答