Skip to content

Commit ff68d6b

Browse files
committed
serializer-gson: Change output ordering to match the order of Vanilla components
1 parent b7c62e8 commit ff68d6b

File tree

4 files changed

+23
-22
lines changed

4 files changed

+23
-22
lines changed

serializer-configurate3/src/test/java/net/kyori/adventure/serializer/configurate3/ComponentSerializerTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ void testSerializeToString() {
4343
.build()
4444
.serialize(Component.text("Hello", Style.style(TextDecoration.BOLD)));
4545

46-
assertEquals("{\"text\":\"Hello\",\"bold\":true}", serialized.getString());
46+
assertEquals("{\"bold\":true,\"text\":\"Hello\"}", serialized.getString());
4747
}
4848

4949
@Test

serializer-configurate4/src/test/java/net/kyori/adventure/serializer/configurate4/ComponentSerializerTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ void testSerializeToString() {
4343
.build()
4444
.serialize(Component.text("Hello", Style.style(TextDecoration.BOLD)));
4545

46-
assertEquals("{\"text\":\"Hello\",\"bold\":true}", serialized.getString());
46+
assertEquals("{\"bold\":true,\"text\":\"Hello\"}", serialized.getString());
4747
}
4848

4949
@Test

text-serializer-gson/src/main/java/net/kyori/adventure/text/serializer/gson/ComponentSerializerImpl.java

+19-18
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,25 @@ private static <C extends NBTComponent<C, B>, B extends NBTComponentBuilder<C, B
172172
@Override
173173
public JsonElement serialize(final Component src, final Type typeOfSrc, final JsonSerializationContext context) {
174174
final JsonObject object = new JsonObject();
175+
176+
if(src.hasStyling()) {
177+
final JsonElement style = context.serialize(src.style());
178+
if(style.isJsonObject()) {
179+
for(final Map.Entry<String, JsonElement> entry : ((JsonObject) style).entrySet()) {
180+
object.add(entry.getKey(), entry.getValue());
181+
}
182+
}
183+
}
184+
185+
final List<Component> children = src.children();
186+
if(!children.isEmpty()) {
187+
final JsonArray extra = new JsonArray();
188+
for(final Component child : children) {
189+
extra.add(context.serialize(child));
190+
}
191+
object.add(EXTRA, extra);
192+
}
193+
175194
if(src instanceof TextComponent) {
176195
object.addProperty(TEXT, ((TextComponent) src).content());
177196
} else if(src instanceof TranslatableComponent) {
@@ -215,24 +234,6 @@ public JsonElement serialize(final Component src, final Type typeOfSrc, final Js
215234
throw notSureHowToSerialize(src);
216235
}
217236

218-
final List<Component> children = src.children();
219-
if(!children.isEmpty()) {
220-
final JsonArray extra = new JsonArray();
221-
for(final Component child : children) {
222-
extra.add(context.serialize(child));
223-
}
224-
object.add(EXTRA, extra);
225-
}
226-
227-
if(src.hasStyling()) {
228-
final JsonElement style = context.serialize(src.style());
229-
if(style.isJsonObject()) {
230-
for(final Map.Entry<String, JsonElement> entry : ((JsonObject) style).entrySet()) {
231-
object.add(entry.getKey(), entry.getValue());
232-
}
233-
}
234-
}
235-
236237
return object;
237238
}
238239

text-serializer-gson/src/test/java/net/kyori/adventure/text/serializer/gson/GsonComponentSerializerTest.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ public void testPre116Downsamples() {
6767
final TextColor original = TextColor.color(0xAB2211);
6868
final NamedTextColor downsampled = NamedTextColor.nearestTo(original);
6969
final Component test = Component.text("meow", original);
70-
assertEquals("{\"text\":\"meow\",\"color\":\"" + name(downsampled) + "\"}", GsonComponentSerializer.colorDownsamplingGson().serializer().toJson(test));
70+
assertEquals("{\"color\":\"" + name(downsampled) + "\",\"text\":\"meow\"}", GsonComponentSerializer.colorDownsamplingGson().serializer().toJson(test));
7171
}
7272

7373
@Test
@@ -76,7 +76,7 @@ public void testPre116DownsamplesInChildren() {
7676
final NamedTextColor downsampled = NamedTextColor.nearestTo(original);
7777
final Component test = Component.text(builder -> builder.content("hey").append(Component.text("there", original)));
7878

79-
assertEquals("{\"text\":\"hey\",\"extra\":[{\"text\":\"there\",\"color\":\"" + name(downsampled) + "\"}]}", GsonComponentSerializer.colorDownsamplingGson().serializer().toJson(test));
79+
assertEquals("{\"extra\":[{\"color\":\"" + name(downsampled) + "\",\"text\":\"there\"}],\"text\":\"hey\"}", GsonComponentSerializer.colorDownsamplingGson().serializer().toJson(test));
8080
}
8181

8282
private static String name(final NamedTextColor color) {

0 commit comments

Comments
 (0)