1.1 --- a/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/ConvertTypes.java Thu Apr 18 16:58:55 2013 +0200
1.2 +++ b/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/ConvertTypes.java Thu Apr 18 17:13:08 2013 +0200
1.3 @@ -162,25 +162,33 @@
1.4 }
1.5 try {
1.6 URL u = new URL(base, url.replace(" ", "%20"));
1.7 - InputStream is = u.openStream();
1.8 + PushbackInputStream is = new PushbackInputStream(u.openStream(), 1);
1.9 + boolean array = false;
1.10 if (jsonp != null) {
1.11 - PushbackInputStream pis = new PushbackInputStream(is, 1);
1.12 - is = pis;
1.13 for (;;) {
1.14 - int ch = pis.read();
1.15 + int ch = is.read();
1.16 if (ch == -1) {
1.17 break;
1.18 }
1.19 + if (ch == '[') {
1.20 + is.unread(ch);
1.21 + array = true;
1.22 + break;
1.23 + }
1.24 if (ch == '{') {
1.25 - pis.unread(ch);
1.26 + is.unread(ch);
1.27 break;
1.28 }
1.29 }
1.30 + } else {
1.31 + int ch = is.read();
1.32 + array = ch == '[';
1.33 + is.unread(ch);
1.34 }
1.35 Reader r = new InputStreamReader(is, "UTF-8");
1.36
1.37 JSONTokener tok = new JSONTokener(r);
1.38 - JSONObject obj = new JSONObject(tok);
1.39 + Object obj = array ? new JSONArray(tok) : new JSONObject(tok);
1.40 jsonResult[0] = convertToArray(obj);
1.41 } catch (JSONException | IOException ex) {
1.42 jsonResult[0] = ex;
1.43 @@ -229,7 +237,7 @@
1.44 JSONObject obj = (JSONObject)jsonObject;
1.45 for (int i = 0; i < props.length; i++) {
1.46 try {
1.47 - values[i] = obj.get(props[i]);
1.48 + values[i] = obj.has(props[i]) ? obj.get(props[i]) : null;
1.49 } catch (JSONException ex) {
1.50 LOG.log(Level.SEVERE, "Can't read " + props[i] + " from " + jsonObject, ex);
1.51 }
2.1 --- a/javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/JSONTest.java Thu Apr 18 16:58:55 2013 +0200
2.2 +++ b/javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/JSONTest.java Thu Apr 18 17:13:08 2013 +0200
2.3 @@ -17,7 +17,6 @@
2.4 */
2.5 package org.apidesign.bck2brwsr.htmlpage;
2.6
2.7 -import java.util.Arrays;
2.8 import java.util.Iterator;
2.9 import org.apidesign.bck2brwsr.core.JavaScriptBody;
2.10 import org.apidesign.bck2brwsr.htmlpage.api.OnReceive;
2.11 @@ -38,7 +37,7 @@
2.12 * @author Jaroslav Tulach <jtulach@netbeans.org>
2.13 */
2.14 @Page(xhtml = "Empty.html", className = "JSONik", properties = {
2.15 - @Property(name = "fetched", type = PersonImpl.class),
2.16 + @Property(name = "fetched", type = Person.class),
2.17 @Property(name = "fetchedCount", type = int.class),
2.18 @Property(name = "fetchedSex", type = Sex.class, array = true)
2.19 })