如何将Map [String,Any]转换为Json?

时间:2012-07-09 11:40:49

标签: json scala lift

我调用了JObject:

jObject.values

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

1 个答案:

答案 0 :(得分:2)

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

要获得JObject,您需要将List[JField]传递给构造函数。因此,您需要将每个地图条目((String, Any))转换为JField。映射名称是微不足道的;挑战是将Any转换为JValue

您可以使用模式匹配或类型检查(例如,如果值为Int,将其强制转换为int并包装在JInt中),但与所有不完整模式一样匹配这将是脆弱的 - 你如何处理非基元以将它们包装回来的方式?


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