Thanks again Reinier.
I've being tryign with by this way, but my problem is accessing associative
arrays. There is one way to do that?!
On Wed, Nov 19, 2008 at 6:43 PM, Reinier Zwitserloot <[EMAIL PROTECTED]>wrote:
>
> Yeah, I kinda sorta did with my new proposed JSON library.
>
> But you can go even faster.
>
> Create a java class which mimics essentially exactly the structure of
> your JSON - with getter methods for everything relevant.
>
> Give this class NO fields whatsoever, just getters. Then let it extend
> JavaScriptObject.
>
> Make each getter native and grab the data straight from the JSON
> structure. e.g. if you have:
>
> {'name' = "foobar", 'age'=10}
>
> you could make:
>
> public final class Name extends JavaScriptObject {
> public native String getName() /*-{ return this.name; }-*/;
> public native int getAge() /*-{ return this.age; }-*/;
> }
>
> This is exactly as fast as it can possibly be in javascript, as this
> whole hullabaloo gets eliminated entirely by the compiler. A call to
> name.getName() will be translated directly to 'name.name' in the
> javascript.
>
> You can get arbitrarily funky with your JSON, but you'll need to write
> all your accessors in javascript, so you'll need to know a thing or
> two about javascript to build yoru accessor class. Good luck.
> Make extends JavaScriptObject.
>
> On Nov 19, 6:51 pm, "Jose Santa Elena" <[EMAIL PROTECTED]> wrote:
> > Hi all...
> > Has someone addressed the performance problem on parsing large JSON
> files?
> >
> > I created one Wrapper to do a "latter bind"...
> >
> > public class JSONMap implements Map {
> > private JSONObject wrappedJSONObject;
> > public JSONMap(JSONObject jsonObject) {
> > if (jsonObject == null) {
> > throw new WrongUseException("Invalid JSONObject");}
> >
> > this.wrappedJSONObject = jsonObject;}
> >
> > public void clear() {
> > throw new UnsupportedOperationException();}
> >
> > public boolean containsKey(Object key) {
> > throw new UnsupportedOperationException();
> >
> > }
> >
> > public boolean containsValue(Object value) {
> > throw new UnsupportedOperationException();
> >
> > }
> >
> > public Set entrySet() {
> > throw new UnsupportedOperationException();}
> >
> > protected String getKey(Object key) {
> > String keyValue;
> > if (key instanceof String) {
> > keyValue = (String)key;} else {
> >
> > keyValue = key.toString();
> >
> > }
> > return keyValue;
> > }
> >
> > public Object get(Object key) {
> > JSONArray jsonArray;
> > JSONBoolean jsonbBoolean;
> > JSONNumber jsonNumber;
> > JSONObject jsonObject;
> > JSONString jsonString;
> > JSONValue jsonValue = wrappedJSONObject.get(getKey(key));
> > if ((jsonArray = jsonValue.isArray()) != null) {
> > return new JSONList(jsonArray);} else if ((jsonbBoolean =
> jsonValue.isBoolean()) != null) {
> >
> > return new Boolean(jsonbBoolean.booleanValue());} else if ((jsonNumber =
> jsonValue.isNumber()) != null) {
> >
> > return new Double(jsonNumber.doubleValue());} else if ((jsonObject =
> jsonValue.isObject()) != null) {
> >
> > return new JSONMap(jsonObject);} else if ((jsonString =
> jsonValue.isString()) != null) {
> >
> > return jsonString.stringValue();} else {
> > return null;
> > }
> > }
> >
> > public JSONMap getMap(String key) {
> > return new JSONMap(wrappedJSONObject.get(key).isObject());}
> >
> > public String getString(String key) {
> > return wrappedJSONObject.get(key).isString().stringValue();}
> >
> > public Double getDouble(String key) {
> > return new Double(wrappedJSONObject.get(key).isNumber().doubleValue());}
> >
> > public JSONList getList(String key) {
> > return new JSONList(wrappedJSONObject.get(key).isArray());
> >
> > }
> >
> > public boolean isEmpty() {
> > return wrappedJSONObject.size() == 0;
> >
> > }
> >
> > public Set keySet() {
> > return wrappedJSONObject.keySet();
> >
> > }
> >
> > public Object put(Object arg0, Object arg1) {
> > throw new UnsupportedOperationException();
> >
> > }
> >
> > public void putAll(Map arg0) {
> > throw new UnsupportedOperationException();
> >
> > }
> >
> > public Object remove(Object key) {
> > throw new UnsupportedOperationException();
> >
> > }
> >
> > public int size() {
> > return wrappedJSONObject.size();
> >
> > }
> >
> > public Collection values() {
> > throw new UnsupportedOperationException();
> >
> > }
> > }
> >
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Google Web Toolkit" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/Google-Web-Toolkit?hl=en
-~----------~----~----~----~------~----~------~--~---