Monday, April 11, 2011

Convert JavaScript Overlays back to JSON?

I'm having trouble converting a an object from JSON into a JavaScript Overlay object, and back again. I have the following in the class now:

public class Aff extends JavaScriptObject {
  protected Aff() {};
  public static native Aff fromJSONString(String jsonString) /*-{
     return eval('(' + jsonString + ')');
  }-*/;
  public final native String toJSON() /*-{
    return this.toString();
  }-*/;
  // followed by get/seters and a bunch of TODO.
}

I am able to create and work with objects, but the obj.toJSON() returns [object Object]. I can't seem to find any way around this without doing a manual convert back into JSON.

From stackoverflow
  • this.toString();

    doesnt actually produce json code. It prints the object's string representation. You will need either custom code to write out the json, or better, use a library.

    Two ways to use libraries - use gwt's built in json libraries. Not as nice, but dont need to write jsni code. Or, add a script resource to your module xml for a library such as one javascript json library here , and use that in jsni. Or, find another library, there are literally hundreds out there.

    Jack M. : That's really what I wanted to avoid. I have very complex objects left over from a legacy system and don't want to write the JSON conversion by hand. That was the plan if nobody answered, but man it is annoying.

0 comments:

Post a Comment