我们在GWT客户端使用JSO进行JSON解析。现在,我们需要将Java对象转换为JSON字符串。我只想了解,我们如何才能实现这一目标? JSO覆盖类型用于JSON解析。它是否也可以用于创建JSON请求字符串,还是我们必须通过其他方式?
答案 0 :(得分:2)
在JavaScript中生成JSON对象非常简单。你可以这样做:
var obj = { "var1": "hello", "var2": "world" };
这将生成一个带有两个变量(“var1”和“var2”)及其值(“hello”,“world”)的JSON对象。
可以使用JSON.stringify(jso);
方法将Object转换为String(用于发送目的)。
从java代码生成JSON数据是不可能的(因为没有有用的结果),因为所有变量都被优化为单个字符串,因此应用此方法不会产生有用的结果(如果可能的话)。
如果您已经有一个JSO对象(使用safeeval之类的东西生成)。您可以在那里编辑变量,如下所示:
public final native void newValue(String newValue) /*-{
this.ValueName = newValue;
}-*/;
如果您希望将对象作为字符串,则必须在JSO类中定义以下方法:
public final native String returnAsString () /*-{
return JSON.stringify(this);
}-*/;
或在Java类中使用它:String s = (new JSONObject(jso)).toString();
。
通过这种方式,您可以编辑原始输入数据并将原始对象发送回服务器。
BR