创建一个json对象并向其添加新的键、值对

创建一个json对象并向其添加新的键、值对,json,scala,playframework,play-json,Json,Scala,Playframework,Play Json,我有一张scala地图,它的形式是。我的目标是迭代映射的所有键,并创建一个新的json对象,它由所有这些k,v对组成。我正在为json库使用play框架 我试过这个: var out = JsNull for (str <- inp) { out = out.as[JsObject] + (str -> Json.toJson(inp(str))) } var out=JsNull for(str Json.toJson(inp(str))) } 但是,Json.toJ

我有一张scala地图,它的形式是
。我的目标是迭代映射的所有键,并创建一个新的json对象,它由所有这些
k,v
对组成。我正在为json库使用play框架

我试过这个:

var out  = JsNull
for (str <- inp) {
    out = out.as[JsObject] + (str -> Json.toJson(inp(str)))
}
var out=JsNull
for(str Json.toJson(inp(str)))
}
但是,Json.toJson返回一个JsonNode,而它需要一个JsValue。我已经看过这个添加新项目

问题1:如何将JsonNode转换为JsValue


问题2:这在scala中是一个糟糕的实现。我正在使用var。如何转换相同的逻辑,以便使用val。我对函数式编程特别陌生,因此很难摆脱通常的迭代循环。

为什么不使用json.toJson将映射转换为json,而不是对其进行迭代?让我惊讶的是,有多少人不明白JSON的序列化是如何与GSON、Play等一起工作的。我几乎每次都看到这样的问题。Le sigh…为什么不使用json.toJson将映射转换为json,而不是对其进行迭代?让我惊讶的是,有多少人不明白JSON的序列化是如何与GSON、Play等一起工作的。我几乎每次都看到这样的问题。Le sigh…为什么不使用json.toJson将映射转换为json,而不是对其进行迭代?让我惊讶的是,有多少人不明白JSON的序列化是如何与GSON、Play等一起工作的。我几乎每次都看到这样的问题。唉。。。。