From 53dbaafb5c37c9a56d97d440891e3bc6bde636ed Mon Sep 17 00:00:00 2001 From: Alanscut Date: Thu, 9 Jan 2020 17:28:16 +0800 Subject: [PATCH] fix issue #565 and add testcase --- .../internal/path/EvaluationContextImpl.java | 2 +- .../com/jayway/jsonpath/issue/Issue565.java | 37 +++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 json-path/src/test/java/com/jayway/jsonpath/issue/Issue565.java diff --git a/json-path/src/main/java/com/jayway/jsonpath/internal/path/EvaluationContextImpl.java b/json-path/src/main/java/com/jayway/jsonpath/internal/path/EvaluationContextImpl.java index 3fc7e487..1f630304 100644 --- a/json-path/src/main/java/com/jayway/jsonpath/internal/path/EvaluationContextImpl.java +++ b/json-path/src/main/java/com/jayway/jsonpath/internal/path/EvaluationContextImpl.java @@ -113,7 +113,7 @@ public class EvaluationContextImpl implements EvaluationContext { public Collection updateOperations(){ - Collections.sort(updateOperations); + Collections.reverse(updateOperations); return Collections.unmodifiableCollection(updateOperations); } diff --git a/json-path/src/test/java/com/jayway/jsonpath/issue/Issue565.java b/json-path/src/test/java/com/jayway/jsonpath/issue/Issue565.java new file mode 100644 index 00000000..bb38ab6a --- /dev/null +++ b/json-path/src/test/java/com/jayway/jsonpath/issue/Issue565.java @@ -0,0 +1,37 @@ +package com.jayway.jsonpath.issue; + +import com.jayway.jsonpath.JsonPath; +import com.jayway.jsonpath.ReadContext; +import org.junit.Test; + +import java.util.List; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +public class Issue565 { + + @Test + public void test_issue_565() { + String json = "{\n" + + " \"oldName\": {\n" + + " \"oldName\": {\n" + + " \"oldName\": {\n" + + " \"otherName\": \"value\"\n" + + " }\n" + + " }\n" + + " }\n" + + "}"; + String jsonPath = "$..[?(@.oldName)]"; + String oldKeyName = "oldName"; + String newKeyName = "newName"; + ReadContext context = JsonPath.parse(json).renameKey(jsonPath, oldKeyName, newKeyName); + List result = context.read("$..[?(@.newName)]"); + + assertEquals(3, result.size()); + + assertNotNull(context.read("$.newName")); + assertNotNull(context.read("$.newName.newName")); + assertNotNull(context.read("$.newName.newName.newName")); + } +}