我想通过在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
请求帮助..!
答案 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以及快速启动和样本。