FasterXML / FasterXML/jackson-module-scala

FIELD property accessor is overridden by GETTER property accessor

Ouverte
#282 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
Langage dominant
Scala
Étoiles
506
Forks
138
Merge moyen
3 h 6 min
PR mergées (30 j)
48

Description

Not sure exactly what's going on here. A public field gets serialized fine, until I set the visibility using `PropertyAccessor.GETTER`.

```
~/test ❯❯❯ cat src/main/scala/Test.scala
import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.module.scala.DefaultScalaModule
import com.fasterxml.jackson.annotation.PropertyAccessor
import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility

import java.io.StringWriter

object Test extends App {
val serializer = new ObjectMapper
serializer.registerModule(DefaultScalaModule)
//serializer.setVisibility(PropertyAccessor.GETTER, Visibility.NONE)
serializer.setVisibility(PropertyAccessor.FIELD, Visibility.PROTECTED_AND_PUBLIC)

val test = new Test
test.addString("a")
println(test.toJson)
}

class Test {

var entries = Seq[String]()

def addString(str: String) = {
entries = entries :+ str
}

def toJson(): String = {
val writer = new StringWriter
Test.serializer.writeValue(writer, this)
return writer.toString
}
}
```

produces `{"entries":["a"]}`, but uncommenting the `GETTER` line produces `{}`. Not sure if I'm missing something about the way `PropretyAccessor.GETTER` works, but this seems like a bug.

Here's my `build.sbt` as well, in case it's a version-specific problem:

```
~/test ❯❯❯ cat build.sbt
name := "Test"

version := "1.0"

scalaVersion := "2.11.8"

libraryDependencies ++= Seq(
"com.fasterxml.jackson.module" % "jackson-module-scala_2.11" % "2.7.5"
)
```

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.