Skip to content

Instantly share code, notes, and snippets.

Created April 7, 2015 16:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anonymous/7dc05bfdefe7a9c68d9a to your computer and use it in GitHub Desktop.
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
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