FimfictionAPI: quote problem in json "parsing"
authorNiki Roo <niki@nikiroo.be>
Wed, 12 Jul 2017 20:36:14 +0000 (22:36 +0200)
committerNiki Roo <niki@nikiroo.be>
Wed, 12 Jul 2017 20:36:14 +0000 (22:36 +0200)
src/be/nikiroo/fanfix/supported/FimfictionApi.java

index 591bbb08736c921333b885c19548c51e7d5c78c2..1594d5e18f365d14bfeb227e057bdec07c528bbf 100644 (file)
@@ -281,6 +281,34 @@ class FimfictionApi extends BasicSupport {
                        return null;
                }
 
-               return getKeyText(json.substring(pos), "\"", null, "\"");
+               String result = null;
+               String wip = json.substring(pos);
+
+               pos = nextUnescapedQuote(wip, 0);
+               if (pos >= 0) {
+                       wip = wip.substring(pos + 1);
+                       pos = nextUnescapedQuote(wip, 0);
+                       if (pos >= 0) {
+                               result = wip.substring(0, pos);
+                       }
+               }
+
+               return result;
+       }
+
+       // next " but don't take \" into account
+       static private int nextUnescapedQuote(String result, int pos) {
+               while (pos >= 0) {
+                       pos = result.indexOf("\"", pos);
+                       if (pos == 0 || (pos > 0 && result.charAt(pos - 1) != '\\')) {
+                               break;
+                       }
+
+                       if (pos < result.length()) {
+                               pos++;
+                       }
+               }
+
+               return pos;
        }
 }