期望的Json输出Java

时间:2017-04-13 01:00:53

标签: java mysql json

我是Java和Json的新手。我想问一下如何获得以下Json输出。

{
"AppData": {
    "status": "****",
    "message": [
        ""
    ]
},
"Data": {
    "token": "****"
}

}

我使用以下代码。 用于从数据库检索数据,导入HashMap并从HashMap检索的代码。

HashMap<AppDataRequest, AppData> appdatas = new HashMap<AppDataRequest, AppData>();

static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://****:3306/****";

static final String USER = "****";
static final String PASS = "****";

public AppDataService(){
    Connection conn = null;
    Statement stat = null;
    try{
        Class.forName("com.mysql.jdbc.Driver");
        conn = DriverManager.getConnection(DB_URL, USER, PASS);
        stat = conn.createStatement();
        String sql = "SELECT * FROM testdata";
        ResultSet resu = stat.executeQuery(sql);
        while(resu.next()){
            int id = resu.getInt("app_id");
            String email = resu.getString("email");
            String password = resu.getString("password");
            String token = resu.getString("token");
            appdatas.put(new AppDataRequest(id, email, password), new AppData(" ", "success", token));
        }
        resu.close();
        stat.close();
        conn.close();
    }
    catch(SQLException se){
        se.printStackTrace();
    }
    catch(Exception e){
        e.printStackTrace();
    }
    finally{
        try{
            if(stat!=null){
                stat.close();
            }
        }
        catch (SQLException se2){

        }
        try{
            if(conn!=null){
                conn.close();
            }
        }
        catch(SQLException se3){
            se3.printStackTrace();
        }
    }       
}

public AppData getSAppData(int id, String email, String password){
    return appdatas.get(new AppDataRequest (id, email, password));
}

POST代码

@POST
@Path("/appdatas")
public AppData getSAppData(AppDataRequest adr) {
    AppData appdata = ads.getSAppData(adr.getId(), adr.getEmail(), adr.getPassword());
    if(appdata == null){
        throw new DataNotFoundException(" ");
    }
    return appdata;
}

我在Postman的输出是

{
  "message": "****",
  "status": "****",
  "token": "****"
}

我希望得到输出,如Json输出中所示。我该怎么办?

1 个答案:

答案 0 :(得分:0)

您的输出是您返回的数据的Json表示。

以下方法返回AppData类型的对象,该对象是appdatas地图的值。

public AppData getSAppData(int id, String email, String password){
    return appdatas.get(new AppDataRequest (id, email, password));
}

如果要更改输出,请返回相应的数据,键(AppDataRequest)对象和值(AppData)对象。