From 3dad8462a3691f921ec0dd81edaafb285b4168cb Mon Sep 17 00:00:00 2001 From: Nathan Sweet Date: Tue, 5 Aug 2025 20:07:35 -0400 Subject: [PATCH] [libgdx] Use JsonMatcher to parse skeleton JSON. --- .../src/com/esotericsoftware/spine/SkeletonJson.java | 8 +++++--- .../src/com/esotericsoftware/spine/JsonRollback.java | 4 +--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonJson.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonJson.java index c300c1d51..eef98b912 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonJson.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/SkeletonJson.java @@ -39,7 +39,7 @@ import com.badlogic.gdx.graphics.g2d.TextureAtlas; import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.FloatArray; import com.badlogic.gdx.utils.IntArray; -import com.badlogic.gdx.utils.JsonReader; +import com.badlogic.gdx.utils.JsonMatcher; import com.badlogic.gdx.utils.JsonValue; import com.badlogic.gdx.utils.Null; import com.badlogic.gdx.utils.SerializationException; @@ -125,6 +125,8 @@ import com.esotericsoftware.spine.attachments.VertexAttachment; public class SkeletonJson extends SkeletonLoader { private final Array linkedMeshes = new Array(true, 8, LinkedMesh[]::new); + private final JsonMatcher parser = new JsonMatcher(); + public SkeletonJson (AttachmentLoader attachmentLoader) { super(attachmentLoader); } @@ -136,7 +138,7 @@ public class SkeletonJson extends SkeletonLoader { public SkeletonData readSkeletonData (FileHandle file) { if (file == null) throw new IllegalArgumentException("file cannot be null."); try { - SkeletonData skeletonData = readSkeletonData(new JsonReader().parse(file)); + SkeletonData skeletonData = readSkeletonData(parser.parseRoot(file)); skeletonData.name = file.nameWithoutExtension(); return skeletonData; } catch (Throwable ex) { @@ -147,7 +149,7 @@ public class SkeletonJson extends SkeletonLoader { public SkeletonData readSkeletonData (InputStream input) { if (input == null) throw new IllegalArgumentException("dataInput cannot be null."); try { - return readSkeletonData(new JsonReader().parse(input)); + return readSkeletonData(parser.parseRoot(input)); } catch (Throwable ex) { throw new SerializationException("Error reading JSON skeleton data.", ex); } diff --git a/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/JsonRollback.java b/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/JsonRollback.java index e3a13c3ac..cf5045fa4 100644 --- a/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/JsonRollback.java +++ b/spine-libgdx/spine-skeletonviewer/src/com/esotericsoftware/spine/JsonRollback.java @@ -73,9 +73,7 @@ public class JsonRollback { if (skeleton == null) { skeleton = new JsonValue(ValueType.object); skeleton.name = "skeleton"; - JsonValue first = root.child; - root.child = skeleton; - skeleton.next = first; + root.addChildFirst(skeleton); } JsonValue spine = skeleton.get("spine"); if (spine != null)