0

キーごとに任意の数のマップの 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 を拡張する別の値を追加する必要がありますか? 私はこれについて完全に間違っていますか?どんな助けでも大歓迎です。

4

1 に答える 1