次の JSON が与えられます。
{
"foo": "bar",
"baz":[
{ "qux" : "quux" },
{ "quuux" : "quuuux" }
]
}
それを Scala ケース クラスとして表現する最良の方法は何ですか? 論理的には、次のようになるはずです。
case class Foo(
foo: String,
baz: List[(String, String)]
)
ただし、これを Json4s と Jackson で解析しようとすると、次のようになります。
No usable value for baz
No usable value for _1
Did not find value which can be converted into java.lang.String
org.json4s.package$MappingException: No usable value for baz
No usable value for _1
Did not find value which can be converted into java.lang.String
逆に、予想を構築するとFoo
...
val foo = Foo(foo = "bar", baz = List(("qux" -> "qux1"), ("qux" -> "qux2")))
...そしてそれをJSONとして書くと、タプルのリストを取得できません。次のようになります:
{
"foo" : "bar",
"baz" : [ {
"_1" : "qux",
"_2" : "qux1"
}, {
"_1" : "qux",
"_2" : "qux2"
} ]
}
この回答では、Json4sが DSLからオブジェクトを生成すると主張Tuple2s
しているにもかかわらず、オブジェクト フィールドがJValue
. Foo
モデルオブジェクトをシリアライズおよびデシリアライズする以外に他のことをしたいので、 JValues
.
それを考えると、私はここで何をすべきですか?