我正在创建一个可以向服务器发送不同请求的客户端。我的目标之一是没有任何大的依赖。
请求可能如下所示:
{
"method": "getUser",
"methodParameters": {
"a": "b",
"c": "d",
"e": "f",
"data": {
"u": "v",
"x": "y"
}
},
"version": "1.3"
}
对于每种类型的请求方法,数据对象的内容都不同。 我的问题是,动态构建这些JSON请求的最佳“Java方式”是什么?
到目前为止,我只提出了一些我认为不是最佳方法的替代品。
示例1
只是一个普通的POJO,包含一些set / getters和一个SimpleJSON对象。
public class MethodOne {
JSONObject data = new JSONObject();
private void setX(String x) {
data.put("x", x);
}
private String getX() {
return (String) data.get("x");
}
private void setY(String y) {
data.put("y", y);
}
private String getY() {
return (String) data.get("y");
}
}
示例2
public class RequestData {
public JSONObject methodOne(String x, String y) {
JSONObject data = new JSONObject();
data.put("x", x);
data.put("y", y);
return data;
}
public JSONObject methodTwo(String a, String b) {
JSONObject data = new JSONObject();
data.put("a", a);
data.put("b", b);
return data;
}
}
那你觉得怎么样?以上任何一种解决方案对于这项工作是否更好,或者我还有第三种解决方案吗?感谢。
答案 0 :(得分:1)
请注意,您的示例1不是POJO,它是一个包裹的JSONObject
。
GSON可与真正的POJO一起使用:
class BagOfPrimitives {
private int value1 = 1;
private String value2 = "abc";
private transient int value3 = 3;
//setters/getters optional
}
BagOfPrimitives obj = new BagOfPrimitives();
Gson gson = new Gson();
String json = gson.toJson(obj);
如果您需要getAsJsonObject
方法而不是String
,还有{{1}}方法。另请参阅https://stackoverflow.com/a/13434887/360211。