Skip to content

Commit 29f4ea0

Browse files
yanxutao89wenshao
authored andcommitted
fix support list for JSONPathSingleName, for issue alibaba#3331
1 parent b4b7f72 commit 29f4ea0

File tree

2 files changed

+23
-0
lines changed

2 files changed

+23
-0
lines changed

core/src/main/java/com/alibaba/fastjson2/JSONPathSingleName.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,11 @@ public boolean contains(Object root) {
115115
return ((Map) root).containsKey(name);
116116
}
117117

118+
if (root instanceof List) {
119+
List list = (List) root;
120+
return !list.isEmpty() && contains(list.get(0));
121+
}
122+
118123
ObjectWriterProvider provider = getWriterContext().provider;
119124

120125
ObjectWriter objectWriter = provider.getObjectWriter(root.getClass());
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.alibaba.fastjson2.issues_3300;
2+
3+
import org.junit.jupiter.api.Test;
4+
5+
import static org.junit.jupiter.api.Assertions.assertEquals;
6+
7+
public class Issue3331 {
8+
@Test
9+
public void test() {
10+
String json = "[{\"priority_flag\":9,\"service_type\":\"bbb\",\"destination_addr\":\"bbb\"}]";
11+
Object object1 = com.alibaba.fastjson.JSON.parse(json);
12+
Object object2 = com.alibaba.fastjson2.JSON.parse(json);
13+
String path = "$.service_type";
14+
assertEquals(com.alibaba.fastjson.JSONPath.contains(object1, path), com.alibaba.fastjson2.JSONPath.contains(object2, path));
15+
path = "$[0].service_type";
16+
assertEquals(com.alibaba.fastjson.JSONPath.contains(object1, path), com.alibaba.fastjson2.JSONPath.contains(object2, path));
17+
}
18+
}

0 commit comments

Comments
 (0)