使用JAVA库GSON和多个类创建复杂的JSON对象

dev*_*202 -1 java json gson

我正在研究一个返回JSON对象的API.我正在研究带有java的GSON库,看起来它可以很好地为我服务,因为我需要基于类的JSON(见下文).这些类的实例生成JSON输出和应该是这样的:

 {
  "Command": "login",
  "uid": "123123123",
  "params": {
    "username": "dev_2454",
    "password": "4546845446"
  }
}
Run Code Online (Sandbox Code Playgroud)

而java类如下.

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

public class Params {
    private String username;
    private String password;
}
Run Code Online (Sandbox Code Playgroud)

我不知道该如何开始.欢迎任何帮助.谢谢.

Din*_*ota 6

首先,尝试进一步解释这个问题.但是,使用GSON,请使用多个文件方法执行以下操作来创建JSON.

创建Params.java:

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

    public Params(String username, String password) {
        this.username = username;
        this.password = password;
    }
}
Run Code Online (Sandbox Code Playgroud)

创建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;
    }
}
Run Code Online (Sandbox Code Playgroud)

在主程序中导入这两个引用.

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
Run Code Online (Sandbox Code Playgroud)

并使用以下代码创建JSON:

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);
Run Code Online (Sandbox Code Playgroud)

输出将如下所示:

{
  "Command": "login",
  "uid": "123123123",
  "params": {
    "username": "dev_2454",
    "password": "4546845446"
  }
}
Run Code Online (Sandbox Code Playgroud)

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