Skip to content

Commit 32cf737

Browse files
committed
respect JsonPropertyOrder
1 parent c5d73e8 commit 32cf737

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

src/main/scala/com/fasterxml/jackson/module/scala/introspect/ScalaAnnotationIntrospectorModule.scala

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.fasterxml.jackson.module.scala.introspect
22

3-
import com.fasterxml.jackson.annotation.JsonCreator
3+
import com.fasterxml.jackson.annotation.{JsonCreator, JsonPropertyOrder}
44
import com.fasterxml.jackson.core.Version
55
import com.fasterxml.jackson.databind.`type`.{CollectionLikeType, MapLikeType, ReferenceType, SimpleType}
66
import com.fasterxml.jackson.databind.cfg.MapperConfig
@@ -40,7 +40,13 @@ object ScalaAnnotationIntrospector extends NopAnnotationIntrospector with ValueI
4040
override def findSerializationSortAlphabetically(ann: Annotated): java.lang.Boolean = {
4141
ann match {
4242
case ac: AnnotatedClass if isMaybeScalaBeanType(ac.getAnnotated) =>
43-
java.lang.Boolean.FALSE
43+
val annotation = _findAnnotation(ac, classOf[JsonPropertyOrder])
44+
if (annotation != null) {
45+
// delegate to JacksonAnnotationIntrospector
46+
None.orNull
47+
} else {
48+
java.lang.Boolean.FALSE
49+
}
4450
case _ => None.orNull
4551
}
4652
}

src/test/scala/com/fasterxml/jackson/module/scala/ser/CaseClassSerializerTest.scala

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,8 @@ object CaseClassSerializerTest {
6767
case class ClassWithUnorderedFields(f3: Int = 3, f2: Int = 2, f0: Int = 0, f1: Int = 1)
6868
@JsonPropertyOrder(Array("f0", "f1", "f2", "f3"))
6969
case class AnnotatedClassWithUnorderedFields(f3: Int = 3, f2: Int = 2, f0: Int = 0, f1: Int = 1)
70+
@JsonPropertyOrder(alphabetic = true)
71+
case class AnnotatedClassWithUnorderedFields2(f3: Int = 3, f2: Int = 2, f0: Int = 0, f1: Int = 1)
7072
}
7173

7274
class CaseClassSerializerTest extends SerializerTest {
@@ -239,4 +241,8 @@ class CaseClassSerializerTest extends SerializerTest {
239241
it should "respect JsonPropertyOrder" in {
240242
serialize(AnnotatedClassWithUnorderedFields(), newMapper) shouldEqual """{"f0":0,"f1":1,"f2":2,"f3":3}"""
241243
}
244+
245+
it should "respect JsonPropertyOrder alphabetic=true" in {
246+
serialize(AnnotatedClassWithUnorderedFields(), newMapper) shouldEqual """{"f0":0,"f1":1,"f2":2,"f3":3}"""
247+
}
242248
}

0 commit comments

Comments
 (0)