我已经调用了 JObject:
jObject.values
所以我得到地图[字符串,任何]。我修改了这张地图并获得了 Map[String, Any] 的新实例。现在我不会实现与“值”方法相反的东西:我不会将我的 Map[String, Any] 转换为 JObject(或 json 字符串)
这有点棘手,因为通过调用.values
您会丢失与字段关联的类型信息(因此为什么映射的值类型是Any
)。
为了获得 a JObject
,您需要将 a 传递给List[JField]
构造函数。因此,您需要将每个地图条目 ( (String, Any)
) 转换为JField
. 映射名称很简单;挑战是将 a 转换Any
为JValue
.
您可能可以通过模式匹配或类型检查来做一些事情(例如,如果值是 an Int
,则将其强制转换为 int 并包装在 a 中JInt
),但是与所有不完整的模式匹配一样,这将是脆弱的 - 你怎么办非原始人以它们出现的方式将它们包裹起来?
所以我建议一般来说,最好的方法是不要尝试从输出中执行此操作,.values
而是将对象传递给自身。一旦您丢失了类型信息,就很难确定地找回,而且几乎任何解决方案都必然涉及脆弱的猜测。