使用gwt中的javascript native函数将java对象转换为json

时间:2014-04-11 05:17:00

标签: javascript json gwt jsni

我想通过在GWT中使用JSNI,即javascript本地方法将我的java对象转换为json。 我不想使用像Gson,jackson这样的外部罐子。我跟着代码鸽子了。

public class JsonToJavaUsingJS implements EntryPoint {

  final Student student = new Student(5, "ajinkya", "patil");

  @Override
  public void onModuleLoad() {

    toJson(student);
  }

  public native void toJson(final Student student)
  /*-{
    var json = JSON.stringify(student);
    alert("json object: " + json);
  }-*/;
  }

但它不会将java对象转换为json字符串。 它给出了以下异常

  

[ERROR] [jsontojavausingjs] - 未捕获的异常已转义   com.google.gwt.event.shared.UmbrellaException:异常捕获:(null)@ com.json.js.client.JsonToJavaUsingJS :: toJson(Lcom / json / js / client / Student;)([Java object:com。 json.js.client.Student@176073104]):null

请求帮助..!

2 个答案:

答案 0 :(得分:1)

GWT无法将Java对象转换为JavaScript对象。

但是,如果您让学生课程扩展 JavaScriptObject 。 然后,您可以在本机JavaScript世界和GWT世界中使用Student类。

另一种方法是创建一个创建JSONObject的方法,并使用 Student 类中的数据填充它。

    JSONObject j = new JSONObject();
    j.put("firstName", new JSONString(firstName()));
    j.put("lastName", new JSONString(lastName()));
    return j; // or return j.toString();

答案 1 :(得分:0)

我建议您首先尝试使用GWT方式,如果找不到任何内容,请转到本机JavaScript方式。

  

这里定义了一种简单的方法GWT AutoBean framework以及快速启动和样本。

详细了解Sharing objects between Java source and JavaScript