Commit faca38d4 authored by yihua.huang's avatar yihua.huang

update jsonpath to 2.2.0 #606

parent 1fd94804
...@@ -83,7 +83,7 @@ ...@@ -83,7 +83,7 @@
<dependency> <dependency>
<groupId>com.jayway.jsonpath</groupId> <groupId>com.jayway.jsonpath</groupId>
<artifactId>json-path</artifactId> <artifactId>json-path</artifactId>
<version>0.8.1</version> <version>2.2.0</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.slf4j</groupId> <groupId>org.slf4j</groupId>
......
package us.codecraft.webmagic.selector; package us.codecraft.webmagic.selector;
import com.alibaba.fastjson.JSON;
import com.jayway.jsonpath.JsonPath; import com.jayway.jsonpath.JsonPath;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* JsonPath selector.<br> * JsonPath selector.<br>
...@@ -32,12 +34,20 @@ public class JsonPathSelector implements Selector { ...@@ -32,12 +34,20 @@ public class JsonPathSelector implements Selector {
if (object instanceof List) { if (object instanceof List) {
List list = (List) object; List list = (List) object;
if (list != null && list.size() > 0) { if (list != null && list.size() > 0) {
return list.iterator().next().toString(); return toString(list.iterator().next());
} }
} }
return object.toString(); return object.toString();
} }
private String toString(Object object) {
if (object instanceof Map) {
return JSON.toJSONString(object);
} else {
return String.valueOf(object);
}
}
@Override @Override
public List<String> selectList(String text) { public List<String> selectList(String text) {
List<String> list = new ArrayList<String>(); List<String> list = new ArrayList<String>();
...@@ -48,10 +58,10 @@ public class JsonPathSelector implements Selector { ...@@ -48,10 +58,10 @@ public class JsonPathSelector implements Selector {
if (object instanceof List) { if (object instanceof List) {
List<Object> items = (List<Object>) object; List<Object> items = (List<Object>) object;
for (Object item : items) { for (Object item : items) {
list.add(String.valueOf(item)); list.add(toString(item));
} }
} else { } else {
list.add(String.valueOf(object)); list.add(toString(object));
} }
return list; return list;
} }
......
...@@ -52,4 +52,5 @@ public class JsonPathSelectorTest { ...@@ -52,4 +52,5 @@ public class JsonPathSelectorTest {
JSONObject object2=JSON.parseObject("{\"author\":\"Nigel Rees\",\"title\":\"Sayings of the Century\",\"category\":\"reference\",\"price\":8.95}"); JSONObject object2=JSON.parseObject("{\"author\":\"Nigel Rees\",\"title\":\"Sayings of the Century\",\"category\":\"reference\",\"price\":8.95}");
assertThat(object1).isEqualTo(object2); assertThat(object1).isEqualTo(object2);
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment