如何在 Scala 中给定字段列表(键 -> 值)构建 json 对象

How to build a json object given a list of fields (key -> value) in Scala

我正在寻找有关如何创建 and/or 将多个字段附加到 play.api.libs.json.JsObject 的解决方案。我有一个 list of (string -> JsValue) 我不知道其中有多少,也不知道哪些字段名称可用。

Json.obj 确实接受多个字段,但看起来您不能传入列表。相反,您需要像这样专门传递所有字段:

Json.obj((k1 -> v1), (k2 -> v2), ...)

这不适用于我的用例。我想要这样的东西:

Json.obj(listOfFields) // listOfFields: List[(String, JsValue)]

提前致谢!

我不知道那个特定的库,但这应该将列表分成一组单独的参数:

Json.obj(listOfFields:_*)

通过查看 documentation,可以看出 JsObject 同伴 extends (Seq[(String, JsValue)]) ⇒ JsObject,而不是调用 Json.obj(经过额外转换):

import play.api.libs.json._

def foo(fields: List[(String, JsValue)]): JsObject = JsObject(fields)