我正在创建一个可以向服务器发送不同请求的客户端。我的部分目标是不要有任何大的依赖性。
请求可以如下所示:
{
"method": "getUser",
"methodParameters": {
"a": "b",
"c": "d",
"e": "f",
"data": {
"u": "v",
"x": "y"
}
},
"version": "1.3"
}
对于每种类型的请求方法,数据对象的内容都不同。 我的问题是,动态构建这些 JSON 请求的最佳“Java 方式”是什么?
到目前为止,我只提出了几种替代方案,我认为这不是最好的方法。
示例 1
只是一个普通的 POJO,带有一些 set/getter 和一个 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;
}
}
那你觉得怎么样。上述解决方案是否更适合这项工作,或者还有我尚未想出的第三种解决方案?谢谢。
最佳答案
请注意,您的示例 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);
如果您需要而不是 String
,还有一个 getAsJsonObject
方法。另请参阅https://stackoverflow.com/a/13434887/360211关于这一点。
关于java - 在 Java 中动态构建 JSON 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25932706/