GWT - JSONizing Class产生奇怪的结果

时间:2014-09-09 12:18:13

标签: java json gwt

我想将一些对象jsonize进行转移。我的Dummy类产生的结果与预期完全不同。 以下代码的输出为result = {" id":3}:

package client;
import com.google.gwt.core.client.EntryPoint;

import java.io.Serializable;

public class TestModul implements EntryPoint
{
  public void onModuleLoad()
  {
    Dummy dummy = new Dummy();
    dummy.setDummyText("test");
    String result = jsonDummy(dummy);
    System.out.println("result="+result);
  }

  public static final native String jsonDummy(Dummy dummy) /*-{

      console.log("JsonDummy:" + dummy)
      str = JSON.stringify(dummy);
      console.log("stringified:" + str)
      return str;
  }-*/;

  public class Dummy implements Serializable
  {
    String dummyText;

    public String getDummyText()
    {
      return dummyText;
    }

    public void setDummyText(String dummyText)
    {
      this.dummyText = dummyText;
    }

    @Override
    public String toString()
    {
      return "Dummy{" +  "dummyText='" + dummyText + '\'' +     '}';
    }
  }
}

console.log只是给了我

JsonDummy:Dummy{dummyText='test'} 
stringified:{"id":3}

我设置了一个新的标准GWT-Project来测试它。使用超级发展模式。我完全混淆了这里出了什么问题。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

如果要在不依赖于JavascriptObject或AutoBean接口的情况下使用POJO,则应使用将为您进行序列化的库。

这是2只进行序列化/反序列化:

还有RestyGWT。它面向REST,但您可以使用其序列化机制。

我认为Errai也有机制,但我从未尝试过。

答案 1 :(得分:0)

id = 3似乎表示对字符串的一些引用,当我有更多的字符串时,ID会发生变化。 我决定用

手动进行JSONizing
JSONObject someObject = new JSONObject(); 
...
someObject().stringify()

并且已在How to genearte JSON on the client中回答。 用于GWT的JSONizing-Frameworks需要注释我的类,这不是我想要的。跨站点域通信似乎不是GWT的最佳选择。

我的tipp:使用GWT开发时:永远不需要使用跨域请求使用RPC!...