给定以下 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
.
鉴于此,我应该在这里做什么?