From 888a11fa106802b0474f028b37b26a201eefea58 Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Thu, 27 Nov 2025 20:13:56 +0100 Subject: [PATCH 1/2] JsonProperty test for map key (#784) * JsonProperty test for map key * Update ColorEnum.scala --- .../java/tools/jackson/module/scala/AnnotatedColor.java | 7 +++++++ .../tools/jackson/module/scala/enum/ColorEnum.scala | 2 ++ .../jackson/module/scala/ser/MapSerializerTest.scala | 8 ++++++-- 3 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 src/test/java/tools/jackson/module/scala/AnnotatedColor.java diff --git a/src/test/java/tools/jackson/module/scala/AnnotatedColor.java b/src/test/java/tools/jackson/module/scala/AnnotatedColor.java new file mode 100644 index 000000000..761848ed4 --- /dev/null +++ b/src/test/java/tools/jackson/module/scala/AnnotatedColor.java @@ -0,0 +1,7 @@ +package tools.jackson.module.scala; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public enum AnnotatedColor { + @JsonProperty("red") RED +} diff --git a/src/test/scala-3/tools/jackson/module/scala/enum/ColorEnum.scala b/src/test/scala-3/tools/jackson/module/scala/enum/ColorEnum.scala index b70aeef52..636681dc2 100644 --- a/src/test/scala-3/tools/jackson/module/scala/enum/ColorEnum.scala +++ b/src/test/scala-3/tools/jackson/module/scala/enum/ColorEnum.scala @@ -1,5 +1,7 @@ package tools.jackson.module.scala.`enum` +import com.fasterxml.jackson.annotation.JsonProperty + enum ColorEnum { case Red, Green, Blue } case class Colors(set: Set[ColorEnum]) diff --git a/src/test/scala/tools/jackson/module/scala/ser/MapSerializerTest.scala b/src/test/scala/tools/jackson/module/scala/ser/MapSerializerTest.scala index 299f50e42..8af43e4f6 100644 --- a/src/test/scala/tools/jackson/module/scala/ser/MapSerializerTest.scala +++ b/src/test/scala/tools/jackson/module/scala/ser/MapSerializerTest.scala @@ -6,7 +6,7 @@ import tools.jackson.core.JsonGenerator import tools.jackson.databind.annotation.JsonSerialize import tools.jackson.databind.json.JsonMapper import tools.jackson.databind.{SerializationContext, ValueSerializer} -import tools.jackson.module.scala.{DefaultScalaModule, JacksonModule} +import tools.jackson.module.scala.{AnnotatedColor, DefaultScalaModule, JacksonModule} import scala.annotation.meta.getter import scala.beans.BeanProperty @@ -20,7 +20,6 @@ class TupleKeySerializer extends ValueSerializer[Product] { } } - object MapSerializerTest { class BeanieWeenie(@BeanProperty @JsonProperty("a") var a: Int, @@ -105,4 +104,9 @@ class MapSerializerTest extends SerializerTest { val wrapper = MapValueBaseWrapper(Map("Double" -> MapValueDouble(1.0), "String" -> MapValueString("word"))) serialize(wrapper) should be ("""{"map":{"Double":{"type":"MapValueDouble","value":1.0},"String":{"type":"MapValueString","value":"word"}}}""") } + + it should "support JsonProperty annotation on Java enum key" in { + val map = Map(AnnotatedColor.RED -> "redValue") + newMapper.writeValueAsString(map) shouldEqual """{"red":"redValue"}""" + } } From abd86cca398e69a203f141869baf23e1d96a13fb Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Thu, 27 Nov 2025 20:18:42 +0100 Subject: [PATCH 2/2] Update ColorEnum.scala --- .../scala-3/tools/jackson/module/scala/enum/ColorEnum.scala | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/test/scala-3/tools/jackson/module/scala/enum/ColorEnum.scala b/src/test/scala-3/tools/jackson/module/scala/enum/ColorEnum.scala index 636681dc2..b70aeef52 100644 --- a/src/test/scala-3/tools/jackson/module/scala/enum/ColorEnum.scala +++ b/src/test/scala-3/tools/jackson/module/scala/enum/ColorEnum.scala @@ -1,7 +1,5 @@ package tools.jackson.module.scala.`enum` -import com.fasterxml.jackson.annotation.JsonProperty - enum ColorEnum { case Red, Green, Blue } case class Colors(set: Set[ColorEnum])