1.1 --- a/ko-ws-tyrus/src/main/java/org/netbeans/html/wstyrus/LoadJSON.java Wed Feb 05 11:43:27 2014 +0100
1.2 +++ b/ko-ws-tyrus/src/main/java/org/netbeans/html/wstyrus/LoadJSON.java Wed Feb 05 12:15:05 2014 +0100
1.3 @@ -49,7 +49,6 @@
1.4 import java.io.PushbackInputStream;
1.5 import java.io.Reader;
1.6 import java.net.HttpURLConnection;
1.7 -import java.net.MalformedURLException;
1.8 import java.net.URL;
1.9 import java.net.URLConnection;
1.10 import java.util.Iterator;
1.11 @@ -159,9 +158,7 @@
1.12 if (string) {
1.13 throw new JSONException("");
1.14 }
1.15 - Reader r = new InputStreamReader(is, "UTF-8");
1.16 -
1.17 - JSONTokener tok = new JSONTokener(r);
1.18 + JSONTokener tok = createTokener(is);
1.19 Object obj;
1.20 obj = array ? new JSONArray(tok) : new JSONObject(tok);
1.21 json = convertToArray(obj);
1.22 @@ -188,6 +185,24 @@
1.23 }
1.24 }
1.25
1.26 + private static JSONTokener createTokener(InputStream is) throws IOException {
1.27 + Reader r = new InputStreamReader(is, "UTF-8");
1.28 + try {
1.29 + return new JSONTokener(r);
1.30 + } catch (LinkageError ex) {
1.31 + // phones may carry outdated version of JSONTokener
1.32 + StringBuilder sb = new StringBuilder();
1.33 + for (;;) {
1.34 + int ch = r.read();
1.35 + if (ch == -1) {
1.36 + break;
1.37 + }
1.38 + sb.append((char)ch);
1.39 + }
1.40 + return new JSONTokener(sb.toString());
1.41 + }
1.42 + }
1.43 +
1.44 static Object convertToArray(Object o) throws JSONException {
1.45 if (o instanceof JSONArray) {
1.46 JSONArray ja = (JSONArray)o;
1.47 @@ -238,8 +253,7 @@
1.48
1.49 public static Object parse(InputStream is) throws IOException {
1.50 try {
1.51 - InputStreamReader r = new InputStreamReader(is, "UTF-8");
1.52 - JSONTokener t = new JSONTokener(r);
1.53 + JSONTokener t = createTokener(is);
1.54 return new JSONObject(t);
1.55 } catch (JSONException ex) {
1.56 throw new IOException(ex);