我有一个scala Map,形式为 <String, Any> . 我的目标是迭代 Map 的所有键并创建一个新的json对象,它包含所有这些 k,v 对 . 我正在使用json库的play框架 .

我试过这个:

var out  = JsNull
for (str <- inp) {
    out = out.as[JsObject] + (str -> Json.toJson(inp(str)))
}

但是Json.toJson返回一个JsonNode,而它期待一个JsValue . 我已经看了这个SO Question添加新项目 .

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

问题2:这是scala中的一个糟糕的实现 . 我对函数式编程特别陌生,因此很难从通常的迭代循环中思考 .