java - 在 Java 中动态构建 JSON 请求

标签 java json

我正在创建一个可以向服务器发送不同请求的客户端。我的部分目标是不要有任何大的依赖性。

请求可以如下所示:

{
  "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/

相关文章:

java - 捕获异常时不定式递归

java - 我可以在 ActionBarActivity 中动态填充 ListView 吗?

java - 我可以使用 TestNG 中的 @Parameters 从用户定义的 xml 中读取而不是从 testng.xml 中读取吗

c# - WCF Rest 客户端发送不正确的内容类型

json - 如何在 MarkLogic 的 XQuery 中以编程方式创建 JSON?

java - 我正在使用 ManyToOne , OneToMany 并且在获取数据时有无限循环

java - Android 如何在使用 webView 时保持屏幕打开

java - 当键位于层次结构下时,使用 Java 提取 JSON 中键的值

c# - 如何在 C# 中创建 JSONArray 并将该数据发送到 Android 应用程序

ios - 以 Json 格式发布请求 iOS