FasterXML / FasterXML/jackson-module-scala

[Scala Worksheet] JsonMappingException Argument of constructor has no property name annotation

Open
#198 6 comments 0 reactions 0 assignees View on GitHub
Dominant language
Scala
Stars
506
Forks
138
Avg merge
3h 6m
Merged PRs (30d)
48

Description

One from JsonMappingException family, but most probably it is not duplicate of them, since no release fixes it.
Environment: `Scala 10.4`, `JIdea 13.1.3` with `JVM 1.7` SDK for Scala, tested with jackson module scala versions `2.2.2`,`2.3.2`, `2.4.5`, `2.5.2` with identical behaviour. The code works if run as regular Scala.

``` scala
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 groupJson: String = """{"name":"Scala ppl","persons":[{"name":"Jeroen","age":26},{"name":"Martin","age":54}],"leader":{"name":"Martin","age":54}}"""

val nieco: Group = mapper.readValue[Group](groupJson)
println(Group)
```

Worksheet results

```
import com.fasterxml.jackson.databind.{DeserializationFeature, ObjectMapper}
import com.fasterxml.jackson.module.scala.DefaultScalaModule
import com.fasterxml.jackson.module.scala.experimental.ScalaObjectMapper

mapper: com.fasterxml.jackson.databind.ObjectMapper with com.fasterxml.jackson.module.scala.experimental.ScalaObjectMapper = $anon$1@44d0b8cf
res0: com.fasterxml.jackson.databind.ObjectMapper = $anon$1@44d0b8cf
res1: com.fasterxml.jackson.databind.ObjectMapper = $anon$1@44d0b8cf

defined class Person
defined class Group

groupJson: String = {"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$A0$A$A0$Group, annotations: [null]] has no property name annotation; must have name when multiple-parameter constructor annotated as Creator
at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCache2([nw] json-unmarshall-group.sc3788296715618745837.tmp:262)
at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCacheValueDeserializer([nw] json-unmarshall-group.sc3788296715618745837.tmp:237)
at com.fasterxml.jackson.databind.deser.DeserializerCache.findValueDeserializer([nw] json-unmarshall-group.sc3788296715618745837.tmp:138)
at com.fasterxml.jackson.databind.DeserializationContext.findRootValueDeserializer([nw] json-unmarshall-group.sc3788296715618745837.tmp:390)
at com.fasterxml.jackson.databind.ObjectMapper._findRootDeserializer([nw] json-unmarshall-group.sc3788296715618745837.tmp:3165)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose([nw] json-unmarshall-group.sc3788296715618745837.tmp:3058)
at com.fasterxml.jackson.databind.ObjectMapper.readValue([nw] json-unmarshall-group.sc3788296715618745837.tmp:2171)
at com.fasterxml.jackson.module.scala.experimental.ScalaObjectMapper$class.readValue([nw] json-unmarshall-group.sc3788296715618745837.tmp:176)
at #worksheet#.$anon$1.readValue([nw] json-unmarshall-group.sc3788296715618745837.tmp:3)
at #worksheet#.nieco$lzycompute([nw] json-unmarshall-group.sc3788296715618745837.tmp:12)
at #worksheet#.nieco([nw] json-unmarshall-group.sc3788296715618745837.tmp:12)
at #worksheet#.#worksheet#([nw] json-unmarshall-group.sc3788296715618745837.tmp:12)
Caused by: java.lang.IllegalArgumentException: Argument #0 of constructor [constructor for A$A0$A$A0$Group, annotations: [null]] has no property name annotation; must have name when multiple-parameter constructor annotated as Creator
at com.fasterxml.jackson.databind.deser.BasicDeserializerFactory.findValueInstantiator(BasicDeserializerFactory.java:286)
at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.buildBeanDeserializer(BeanDeserializerFactory.java:266)
at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.createBeanDeserializer(BeanDeserializerFactory.java:168)
at com.fasterxml.jackson.databind.deser.DeserializerCache._createDeserializer2(DeserializerCache.java:399)
at com.fasterxml.jackson.databind.deser.DeserializerCache._createDeserializer(DeserializerCache.java:348)
at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCache2(DeserializerCache.java:261)
at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCacheValueDeserializer(DeserializerCache.java:241)
at com.fasterxml.jackson.databind.deser.DeserializerCache.findValueDeserializer(DeserializerCache.java:142)
at com.fasterxml.jackson.databind.DeserializationContext.findRootValueDeserializer(DeserializationContext.java:394)
at com.fasterxml.jackson.databind.ObjectMapper._findRootDeserializer(ObjectMapper.java:3169)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3062)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2175)
at com.fasterxml.jackson.module.scala.experimental.ScalaObjectMapper$class.readValue(ScalaObjectMapper.scala:180)
at A$A0$A$A0$$anon$1.readValue([nw] json-unmarshall-group.sc3788296715618745837.tmp:7)
at A$A0$A$A0.nieco$lzycompute([nw] json-unmarshall-group.sc3788296715618745837.tmp:16)
at A$A0$A$A0.nieco([nw] json-unmarshall-group.sc3788296715618745837.tmp:16)
at A$A0$A$A0.get$$instance$$nieco([nw] json-unmarshall-group.sc3788296715618745837.tmp:16)
at A$A0$.main([nw] json-unmarshall-group.sc3788296715618745837.tmp:44)
at A$A0.main([nw] json-unmarshall-group.sc3788296715618745837.tmp)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
Output exceeds cutoff limit.
```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.