如何从 Java 个库中创建复杂的 JSON。 GSON/JACKSON

How to Create Complex JSON out of Java libraries. GSON/JACKSON

我正在开发一个 API,它需要 JSON 来自 类 实例化的对象。我正在使用 java 研究 [GSON 库][1]。似乎它可以很好地为我服务,因为我需要基于 类(见下文)的 JSON。这些 类 的实例生成 JSON 输出并且应该如下所示:

 {
  "Command": "login",
  "uid": "123123123",
  "params": {
    "username": "dev_2454",
    "password": "4546845446"
  }
}

而java类如下

public class LoginInfo {
    private String Command;
    private String uid;
    private Params params;
}

public class Params {
    private String username;
    private String password;
}

我不知道如何开始。欢迎任何帮助。任何其他库示例也很受欢迎。谢谢。 [1]: https://code.google.com/p/google-gson/

首先,尝试进一步解释这个问题。 但是使用 GSON,使用多个文件方法执行以下操作来创建 JSON。看到 Jackson 做事方式的结尾。

创建Params.java:

    public class Params {
    private String username;
    private String password;

    public Params(String username, String password) {
        this.username = username;
        this.password = password;
    }
}

创建 LoginInfo.java :

public class LoginInfo {
    private String Command;
    private String uid;
    private Params params;

    public LoginInfo(Params userparams, String command, String uid) {
        this.params = userparams;
        Command = command;
        this.uid = uid;
    }
}

在您的主程序中导入这两个引用。

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

并使用如下代码创建JSON:

 import com.google.gson.Gson;
 .
 .
 .
Params params=new Params("dev_2454","4546845446");
LoginInfo loginInfo=new LoginInfo(params,"login","123123123");
Gson gson= new GsonBuilder().setPrettyPrinting().create();
String JSON= gson.toJson(loginInfo,loginInfo.getClass());
System.out.println(JSON);

输出将如下所示:

{
  "Command": "login",
  "uid": "123123123",
  "params": {
    "username": "dev_2454",
    "password": "4546845446"
  }
}

使用多个 类 方法的主要原因是确保您将来可以轻松修改代码并帮助您开发健壮的 GSON 解析器。您也可以在 类 中有空的构造函数,但需要有单独的 getter 和 setter GSON 才能正常工作以映射值。

但是,如果您有 Jackson 库,则可以使用以下示例。

import com.fasterxml.jackson.databind.ObjectMapper;
 .
 .
 .
Params params=new Params("dev_2454","4546845446");
LoginInfo loginInfo=new LoginInfo(params,"login","123123123");
String JSON= new ObjectMapper().writeValueAsString(argument);
System.out.println(JSON);

祝你好运。