キーごとに任意の数のマップの map -> map -> ... -> int で構成される json 形式があります。キーは常に文字列で、リーフ タイプは常に 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 を拡張する別の値を追加する必要がありますか? 私はこれについて完全に間違っていますか?どんな助けでも大歓迎です。