我想使用JSON-RPC在客户端发送它:
{"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将对象解析为“字符串”,但无法找出我<inherits>
文件中所需的gwt.xml
。
有什么想法吗?
答案 0 :(得分:1)
试试这个
List<List<String>> params;
而不是
Map<String, String> params;
在您的Params
POJO课程中。
请在此处阅读我的帖子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
对象发回客户端。