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)"); + } }