编码Java对象(POJO)转换成JSON字符串在GWT
问题描述:
目的
我想使用JSON-RPC发送此对客户方:编码Java对象(POJO)转换成JSON字符串在GWT
{"jsonrpc":"2.0","method":"RegisterValues","params":[["Planets","Stars"]],"id":2}
我尝试
使用Resty-GWT:
public interface testService extends RestService {
@Produces("application/json")
@POST
public void myCall(Params myparams, MethodCallback<Response> callback);
public class Params {
String jsonrpc = "2.0";
String method;
//String[] params;
Map<String, String> params;
int id;
public void setId(int id){
this.id = id;
}
public void setMethod(String method){
this.method = method;
}
}
public void setParams(Map<String, String> params){
this.params = params;
}
}
当我在另一大类呼吁params对象(建立呼叫),做事端摹这样的:
Map<Integer, String> myParams = new HashMap<Integer, String>();
myParams.put(0, "Planets");
myParams.setParams(myParams);
显然,这然后将它像:
{"jsonrpc":"2.0", "method":"RegisterValues", "params":{"0":"Planets"}, "id":0}
我无法弄清楚如何让这些法宝:[["Planets"]]
我使用String[]
尝试,但这个给我的结果是:["Planets"]
String[][]
给出了它尚未支持的错误。
可怕的哈克
如果我通过在String
我testService
为:
String myparams = "{\"jsonrpc\":\"2.0\",\"method\":\"RegisterValues\",\"params\":[[\"FPlanets\"]],\"id\":2}";
它的工作原理,但显然这是可怕的。
我尝试使用GSON编码POJO,但GWT不允许反射。我尝试使用thetransactioncompany来解析对象为'String',但无法弄清我需要在我的gwt.xml
文件中的<inherits>
。
有什么想法?
答
在Params
POJO类尝试的这一个
List<List<String>> params;
代替
Map<String, String> params;
。
在这里阅读我的帖子关于How to create a POJO class structure from an JSON string。
以下JSON字符串
"params":[["Planets","Stars"]]
代表List<List<String>>
其中 “PARAMS” 是你的POJO变量名。
POJO:
class Params implements Serializable {
private String jsonrpc;
private String method;
private int id;
private List<List<String>> params;
...
//getter/setter
//default constructor
}
试试这个在服务器端
String myparams = "{\"jsonrpc\":\"2.0\",\"method\":\"RegisterValues\",\"params\":[[\"FPlanets\"]],\"id\":2}";
Params params=gson.fromJson(myparams,Params.class);
System.out.println(params.params+"-"+params.id);
发送Params
对象返回给客户端。
感谢您的详细和精心布置的答案 – fiz