1

我已经调用了 JObject:

jObject.values

所以我得到地图[字符串,任何]。我修改了这张地图并获得了 Map[String, Any] 的新实例。现在我不会实现与“值”方法相反的东西:我不会将我的 Map[String, Any] 转换为 JObject(或 json 字符串)

4

1 回答 1

2

这有点棘手,因为通过调用.values您会丢失与字段关联的类型信息(因此为什么映射的值类型是Any)。

为了获得 a JObject,您需要将 a 传递给List[JField]构造函数。因此,您需要将每个地图条目 ( (String, Any)) 转换为JField. 映射名称很简单;挑战是将 a 转换AnyJValue.

您可能可以通过模式匹配或类型检查来做一些事情(例如,如果值是 an Int,则将其强制转换为 int 并包装在 a 中JInt),但是与所有不完整的模式匹配一​​样,这将是脆弱的 - 你怎么办非原始人以它们出现的方式将它们包裹起来?


所以我建议一般来说,最好的方法是不要尝试从输出中执行此操作,.values而是将对象传递给自身。一旦您丢失了类型信息,就很难确定地找回,而且几乎任何解决方案都必然涉及脆弱的猜测。

于 2012-07-09T11:48:59.680 回答