diff --git a/pom.xml b/pom.xml
index 4ab38b1..9d80771 100644
--- a/pom.xml
+++ b/pom.xml
@@ -88,7 +88,7 @@
us.codecraft
xsoup
- 0.2.2
+ 0.2.3
com.alibaba
diff --git a/webmagic-core/src/main/java/us/codecraft/webmagic/selector/Json.java b/webmagic-core/src/main/java/us/codecraft/webmagic/selector/Json.java
index ef45d00..96d1c2b 100644
--- a/webmagic-core/src/main/java/us/codecraft/webmagic/selector/Json.java
+++ b/webmagic-core/src/main/java/us/codecraft/webmagic/selector/Json.java
@@ -1,7 +1,7 @@
package us.codecraft.webmagic.selector;
import com.alibaba.fastjson.JSON;
-import org.jsoup.parser.TokenQueue;
+import us.codecraft.xsoup.XTokenQueue;
import java.util.List;
@@ -27,11 +27,11 @@ public class Json extends PlainText {
*/
public Json removePadding(String padding) {
String text = getText();
- TokenQueue tokenQueue = new TokenQueue(text);
+ XTokenQueue tokenQueue = new XTokenQueue(text);
tokenQueue.consumeWhitespace();
tokenQueue.consume(padding);
tokenQueue.consumeWhitespace();
- String chompBalanced = tokenQueue.chompBalanced('(', ')');
+ String chompBalanced = tokenQueue.chompBalancedNotInQuotes('(', ')');
return new Json(chompBalanced);
}
diff --git a/webmagic-core/src/test/java/us/codecraft/webmagic/selector/JsonTest.java b/webmagic-core/src/test/java/us/codecraft/webmagic/selector/JsonTest.java
index 89afbb6..6ad2f87 100644
--- a/webmagic-core/src/test/java/us/codecraft/webmagic/selector/JsonTest.java
+++ b/webmagic-core/src/test/java/us/codecraft/webmagic/selector/JsonTest.java
@@ -12,9 +12,17 @@ public class JsonTest {
private String text = "callback({\"name\":\"json\"})";
+ private String textWithBrackerInContent = "callback({\"name\":\"json)\"})";
+
@Test
public void testRemovePadding() throws Exception {
String name = new Json(text).removePadding("callback").jsonPath("$.name").get();
assertThat(name).isEqualTo("json");
}
+
+ @Test
+ public void testRemovePaddingForQuotes() throws Exception {
+ String name = new Json(textWithBrackerInContent).removePadding("callback").jsonPath("$.name").get();
+ assertThat(name).isEqualTo("json)");
+ }
}