From faca38d4ec91b7f09b292c453d53577ed0a2ff41 Mon Sep 17 00:00:00 2001 From: "yihua.huang" Date: Sat, 24 Jun 2017 11:01:23 +0800 Subject: [PATCH] update jsonpath to 2.2.0 #606 --- pom.xml | 2 +- .../webmagic/selector/JsonPathSelector.java | 16 +++++++++++++--- .../webmagic/selector/JsonPathSelectorTest.java | 1 + 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index 8985291..1a0139f 100644 --- a/pom.xml +++ b/pom.xml @@ -83,7 +83,7 @@ com.jayway.jsonpath json-path - 0.8.1 + 2.2.0 org.slf4j diff --git a/webmagic-core/src/main/java/us/codecraft/webmagic/selector/JsonPathSelector.java b/webmagic-core/src/main/java/us/codecraft/webmagic/selector/JsonPathSelector.java index b0b90f9..f5c0bae 100644 --- a/webmagic-core/src/main/java/us/codecraft/webmagic/selector/JsonPathSelector.java +++ b/webmagic-core/src/main/java/us/codecraft/webmagic/selector/JsonPathSelector.java @@ -1,9 +1,11 @@ package us.codecraft.webmagic.selector; +import com.alibaba.fastjson.JSON; import com.jayway.jsonpath.JsonPath; import java.util.ArrayList; import java.util.List; +import java.util.Map; /** * JsonPath selector.
@@ -32,12 +34,20 @@ public class JsonPathSelector implements Selector { if (object instanceof List) { List list = (List) object; if (list != null && list.size() > 0) { - return list.iterator().next().toString(); + return toString(list.iterator().next()); } } return object.toString(); } + private String toString(Object object) { + if (object instanceof Map) { + return JSON.toJSONString(object); + } else { + return String.valueOf(object); + } + } + @Override public List selectList(String text) { List list = new ArrayList(); @@ -48,10 +58,10 @@ public class JsonPathSelector implements Selector { if (object instanceof List) { List items = (List) object; for (Object item : items) { - list.add(String.valueOf(item)); + list.add(toString(item)); } } else { - list.add(String.valueOf(object)); + list.add(toString(object)); } return list; } diff --git a/webmagic-core/src/test/java/us/codecraft/webmagic/selector/JsonPathSelectorTest.java b/webmagic-core/src/test/java/us/codecraft/webmagic/selector/JsonPathSelectorTest.java index b88e51e..6dff0fa 100644 --- a/webmagic-core/src/test/java/us/codecraft/webmagic/selector/JsonPathSelectorTest.java +++ b/webmagic-core/src/test/java/us/codecraft/webmagic/selector/JsonPathSelectorTest.java @@ -52,4 +52,5 @@ public class JsonPathSelectorTest { JSONObject object2=JSON.parseObject("{\"author\":\"Nigel Rees\",\"title\":\"Sayings of the Century\",\"category\":\"reference\",\"price\":8.95}"); assertThat(object1).isEqualTo(object2); } + }