2014-04-11 93 views
-1

我想通過在GWT中使用JSNI即javascript本地方法將我的java對象轉換爲json。 我不想使用任何外部罐子像Gson,傑克遜。我有鴿子的代碼。通過在gwt中使用javascript本地函數將java對象轉換爲json

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字符串。 它給follwing例外

[錯誤] [jsontojavausingjs] - 未捕獲的異常逃脫 com.google.gwt.event.shared.UmbrellaException:捕獲到異常:(空)@ com.json.js.client.JsonToJavaUsingJS :: toJson(Lcom/json/js/client/Student;)([Java object:[email protected]]):null

plese help ..!

回答

0

我建議你先用GWT方式嘗試一下,如果什麼都找不到然後回到本地JavaScript的方式。

這裏定義一個簡單的方法GWT AutoBean framework以及快速入門和樣本。

瞭解更多關於Sharing objects between Java source and JavaScript

+0

autobean是否支持List和map? – Ajinkya

+0

查看本節中提到的'JSON結構'或[點擊此處](http://code.google.com/p/google-web-toolkit/wiki/AutoBean#visitCollectionProperty%28%29_/_visitMapProperty%28 %29) – Braj

+0

是的,它支持。 – Braj

1

GWT無法將Java對象轉換爲JavaScript對象。

但是,如果你讓你的學生類擴展JavaScriptObject。 然後,您可以在原生JavaScript世界和GWT世界中使用Student類。

另一種方法是創建一個方法,該方法創建一個JSONObject並使用來自學生類的數據填充該方法。

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