FasterXML / FasterXML/jackson-module-scala

Deserialization with @JsonAnySetter

オープン
#193 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
Scala
スター
506
フォーク
138
平均マージ
3時間 6分
マージ済み PR(30日)
48

説明

Hi, I get an exception when using `@JsonAnySetter`:

``` scala
com.fasterxml.jackson.databind.JsonMappingException: Argument #0 of constructor [constructor for java.util.LinkedHashMap, annotations: [null]] has no property name annotation; must have name when multiple-parameter constructor annotated as Creator
```

The test case:

``` scala
import org.scalatest.FunSuite
import com.fasterxml.jackson.annotation.JsonProperty
import com.fasterxml.jackson.annotation.JsonAnyGetter
import com.fasterxml.jackson.annotation.JsonAnySetter
import java.util.HashMap
import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.module.scala.DefaultScalaModule
import com.fasterxml.jackson.databind.SerializationFeature
import com.fasterxml.jackson.annotation.PropertyAccessor
import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility

class Data3 {
@JsonProperty var a = 3;

@JsonAnyGetter def getProperties() = {
val map = new HashMap[String, Object]()
map.put("b", 2.asInstanceOf[Object])
map
}

@JsonAnySetter def setProperties(name: String, value: Object) {
println(s"name: ${name} class: ${value.getClass.getName} value: ${value}")
}
}

class TestAnyGetterSetter extends FunSuite {
test("anygettersetter") {
val mapper = new ObjectMapper()

mapper.registerModule(DefaultScalaModule)
mapper.enable(SerializationFeature.INDENT_OUTPUT)
mapper.setVisibility(PropertyAccessor.ALL, Visibility.NONE)

val d0 = new Data3
val d0Json = mapper.writeValueAsString(d0)

// throws JsonMappingException
val d1 = mapper.readValue(d0Json, classOf[Data3])
}
}
```

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。