【发布时间】:2013-11-23 00:47:36
【问题描述】:
鉴于以下 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"
} ]
}
我在this answer 中看到,尽管 Json4s claims 在 DSL 中从 Tuple2s 生成对象,但它实际上不能为对象字段执行此操作,除非该对象字段被定义为 JValue。因为除了序列化和反序列化之外,我还想用我的Foo 模型对象做其他事情,所以我不想特别想用JValues 来定义它。
鉴于此,我该怎么办?
【问题讨论】: