Created
April 7, 2015 16:28
-
-
Save anonymous/7dc05bfdefe7a9c68d9a to your computer and use it in GitHub Desktop.
Jackson JSON mapper fails on "has no property name annotation". Followed the example from here https://coderwall.com/p/o--apg/easy-json-un-marshalling-in-scala-with-jackson. Having Scala 2.10.4, Jackson libs 2.2.2
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import com.fasterxml.jackson.databind.{DeserializationFeature, ObjectMapper} | |
import com.fasterxml.jackson.module.scala.DefaultScalaModule | |
import com.fasterxml.jackson.module.scala.experimental.ScalaObjectMapper | |
val mapper = new ObjectMapper() with ScalaObjectMapper | |
mapper.registerModule(DefaultScalaModule) | |
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) | |
case class Person(name: String, age: Int) | |
case class Group(name: String, persons: Seq[Person], leader: Person) | |
val jeroen = Person("Jeroen", 26) | |
val martin = Person("Martin", 54) | |
val originalGroup = Group("Scala ppl", Seq(jeroen,martin), martin) | |
originalGroup | |
val group = mapper.readValue[Group]("""{"name":"Scala ppl","persons":[{"name":"Jeroen","age":26},{"name":"Martin","age":54}],"leader":{"name":"Martin","age":54}}""") | |
//com.fasterxml.jackson.databind.JsonMappingException: Argument #0 of constructor [constructor for A$A17$A$A17$Group, annotations: [null]] has no property name annotation; must have name when multiple-paramater constructor annotated as Creator | |
//at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCache2([nw] segments-json-umnarshall-example.sc274342055815886954.tmp:268) | |
//at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCacheValueDeserializer([nw] segments-json-umnarshall-example.sc274342055815886954.tmp:243) | |
//at com.fasterxml.jackson.databind.deser.DeserializerCache.findValueDeserializer([nw] segments-json-umnarshall-example.sc274342055815886954.tmp:142) | |
//at com.fasterxml.jackson.databind.DeserializationContext.findRootValueDeserializer([nw] segments-json-umnarshall-example.sc274342055815886954.tmp:318) | |
//at com.fasterxml.jackson.databind.ObjectMapper._findRootDeserializer([nw] segments-json-umnarshall-example.sc274342055815886954.tmp:2986) | |
//at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose([nw] segments-json-umnarshall-example.sc274342055815886954.tmp:2880) | |
//at com.fasterxml.jackson.databind.ObjectMapper.readValue([nw] segments-json-umnarshall-example.sc274342055815886954.tmp:2044) | |
//at com.fasterxml.jackson.module.scala.experimental.ScalaObjectMapper$class.readValue([nw] segments-json-umnarshall-example.sc274342055815886954.tmp:176) | |
//at #worksheet#.$anon$1.readValue([nw] segments-json-umnarshall-example.sc274342055815886954.tmp:7) | |
//at #worksheet#.group$lzycompute([nw] segments-json-umnarshall-example.sc274342055815886954.tmp:20) | |
//at #worksheet#.group([nw] segments-json-umnarshall-example.sc274342055815886954.tmp:20) | |
//at #worksheet#.#worksheet#([nw] segments-json-umnarshall-example.sc274342055815886954.tmp:20) | |
//Caused by: java.lang.IllegalArgumentException: Argument #0 of constructor [constructor for A$A17$A$A17$Group, annotations: [null]] has no property name annotation; must have name when multiple-paramater constructor annotated as Creator | |
//at com.fasterxml.jackson.databind.deser.BasicDeserializerFactory.findValueInstantiator(BasicDeserializerFactory.java:283) | |
//at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.buildBeanDeserializer(BeanDeserializerFactory.java:263) | |
//at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.createBeanDeserializer(BeanDeserializerFactory.java:168) | |
//at com.fasterxml.jackson.databind.deser.DeserializerCache._createDeserializer2(DeserializerCache.java:401) | |
//at com.fasterxml.jackson.databind.deser.DeserializerCache._createDeserializer(DeserializerCache.java:354) | |
//at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCache2(DeserializerCache.java:267) | |
//at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCacheValueDeserializer(DeserializerCache.java:247) | |
//at com.fasterxml.jackson.databind.deser.DeserializerCache.findValueDeserializer(DeserializerCache.java:146) | |
//at com.fasterxml.jackson.databind.DeserializationContext.findRootValueDeserializer(DeserializationContext.java:322) | |
//at com.fasterxml.jackson.databind.ObjectMapper._findRootDeserializer(ObjectMapper.java:2990) | |
//at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:2884) | |
//at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2048) | |
//at com.fasterxml.jackson.module.scala.experimental.ScalaObjectMapper$class.readValue(ScalaObjectMapper.scala:180) | |
//at A$A17$A$A17$$anon$1.readValue([nw] segments-json-umnarshall-example.sc274342055815886954.tmp:11) | |
//at A$A17$A$A17.group$lzycompute([nw] segments-json-umnarshall-example.sc274342055815886954.tmp:24) | |
//at A$A17$A$A17.group([nw] segments-json-umnarshall-example.sc274342055815886954.tmp:24) | |
//at A$A17$A$A17.get$$instance$$group([nw] segments-json-umnarshall-example.sc274342055815886954.tmp:24) | |
//at A$A17$.main([nw] segments-json-umnarshall-example.sc274342055815886954.tmp:63) | |
//at A$A17.main([nw] segments-json-umnarshall-example.sc274342055815886954.tmp) | |
//at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) | |
//at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment