FasterXML / FasterXML/jackson-module-scala

FIELD property accessor is overridden by GETTER property accessor

Abierto
#282 0 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Scala
Estrellas
506
Forks
138
Merge medio
3 h 6 min
PR fusionados (30 d)
48

Descripción

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"
)
```

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.