我有一个 json 格式,它由 map -> map -> ... -> int 组成,用于每个键的任意数量的映射。键总是字符串,叶子类型总是整数。地图结构的深度因地图中的每个键而异。例如,键“A”可以是 Map[String, Int] 类型,而键“B”可以是 Map[String, Map[String, Int]] 类型。我知道我可以成功地将这种格式解析为 Map[String, Any],但我试图保留这些类型以使这些结构在以后的代码中更容易合并。
我似乎无法以不会在 json4s 提取中引发错误的方式定义我的嵌套结构。我不太确定问题出在我的结构定义中,还是我没有正确提取 json。
这是代码
sealed trait NestedMap[A]
case class Elem[A](val e : A) extends NestedMap[A]
case class NMap[A](val e : Map[String, NestedMap[A]]) extends NestedMap[A]
// XXX this next line doesn't seem to help or hurt
case class Empty extends NestedMap[Nothing]
implicit val formats = DefaultFormats
val s = "{\"1\": 1, \"2\": 1, \"3\": {\"4\": 1}}"
val b = parse(s).extract[NMap[Int]]
这是总是出现的错误
org.json4s.package$MappingException: No usable value for e
Expected object but got JNothing
我是否需要添加另一个扩展 NestedMap 的值?我完全错了吗?任何帮助深表感谢。