1 16 package com.google.gwt.json.client; 17 18 import com.google.gwt.core.client.JavaScriptException; 19 import com.google.gwt.core.client.JavaScriptObject; 20 21 27 public class JSONParser { 28 29 39 public static JSONValue parse(String jsonString) { 40 if (jsonString == null) { 43 throw new NullPointerException (); 44 } 45 if (jsonString == "") { 46 throw new IllegalArgumentException ("empty argument"); 47 } 48 try { 49 JavaScriptObject jsonObject = evaluate(jsonString); 50 return buildValue(jsonObject); 51 } catch (JavaScriptException ex) { 52 throw new JSONException(ex); 53 } 54 } 55 56 63 static JSONValue buildValue(JavaScriptObject jsValue) throws JSONException { 64 65 if (isNull(jsValue)) { 66 return JSONNull.getInstance(); 67 } 68 69 if (isArray(jsValue)) { 70 return new JSONArray(jsValue); 71 } 72 73 if (isBoolean(jsValue)) { 74 return JSONBoolean.getInstance(asBoolean(jsValue)); 75 } 76 77 if (isString(jsValue)) { 78 return new JSONString(asString(jsValue)); 79 } 80 81 if (isDouble(jsValue)) { 82 return new JSONNumber(asDouble(jsValue)); 83 } 84 85 if (isObject(jsValue)) { 86 return new JSONObject(jsValue); 87 } 88 89 93 throw new JSONException("Unknown JavaScriptObject type"); 94 } 95 96 104 private static native boolean asBoolean(JavaScriptObject jsValue) ; 107 108 115 private static native double asDouble(JavaScriptObject jsValue) ; 118 119 126 private static native String asString(JavaScriptObject jsValue) ; 129 130 134 private static native JavaScriptObject evaluate(String jsonString) ; 141 142 149 private static native boolean isArray(JavaScriptObject jsValue) ; 152 153 160 private static native boolean isBoolean(JavaScriptObject jsValue) ; 163 164 171 private static native boolean isDouble(JavaScriptObject jsValue) ; 174 175 183 private static native boolean isNull(JavaScriptObject jsValue) ; 186 187 194 private static native boolean isObject(JavaScriptObject jsValue) ; 197 198 205 private static native boolean isString(JavaScriptObject jsValue) ; 208 209 212 private JSONParser() { 213 } 214 } | Popular Tags |