0

我的理解是,杰克逊DefaultScalaModule应该能够开箱即用地阅读 scala 案例类。但只要我给它一个以上的字段,它似乎就会窒息:

 val mapper = new ObjectMapper().registerModule(DefaultScalaModule)
 scala> mapper.readValue("""{"foo": "bar", "bar": "foo"}""", classOf[Map[String, String]])
 res98: Map[String,String] = Map(foo -> bar, bar -> foo)

 class Foo(foo: String) 
 scala> mapper.readValue("""{"foo": "bar"}""", classOf[Foo])
 res101: Foo = Foo(bar)

 class Foo(foo: String, bar: String) 
 scala> mapper.readValue("""{"foo": "bar", "bar": "foo"}""", classOf[Foo])
 com.fasterxml.jackson.databind.JsonMappingException: Could not find creator property with name 'foo' (in class Foo)
 at [Source: {"foo": "bar", "bar": "foo"}; line: 1, column: 1]

有什么想法吗?

4

1 回答 1

0

好的,我一直在使用 Jackson 2.5.4。看起来升级到 2.6.6 可以修复它。

我一开始尝试升级到 2.7.3,它也修复了这个问题,但似乎破坏了其他东西(不确定到底是什么,我的一些测试失败了,但我还没有弄清楚确切的原因,就放弃了,因为 2.6.6 似乎可以满足我的需要)。

于 2016-07-06T20:26:11.217 回答