Java gson与hava服务器套接字的多个json对象通信

时间:2017-07-22 15:29:47

标签: java json

我尝试通过java中的serversocket进行通信。突然间,我找不到正确的答案,因为我的简单问题是:我想创建json对象,其中数据由两个对象构建。第一个对象是一个字符串,它是一个动作名称,第二个是一个java对象,例如一个User(name,email,pass ...)。这是因为我想要为处理服务器的用户(注册,登录...)发送需要做的操作。我不应该像:

{
"action":{"type":"registration"}
"user":{"name":"Susie", "pass":"pass1"}
}

我如何在java中创建它? 我的示例代码:

public static void main(String args[]){
    String action = "registration";
    User user = new User();
    user.setName("Susane");
    user.setPassword("pass1");
    Gson gson = new GsonBuilder().create();
    String json = gson.toJson(user);
    JsonParser p = new JsonParser();
    JsonObject obj = p.parse(json).getAsJsonObject();
    System.out.println(obj);
}

我想将动作和用户作为json字符串发送然后在服务器上用gson处理它以创建User对象。哪种方法最好?

1 个答案:

答案 0 :(得分:0)

@FXML
void signUp(ActionEvent event) {
    PrintWriter writer = MainGui.client.getWriter();

    User user = new User();
    user.setName(userNameField.getText());
    user.setPassword(pwField.getText());
    Gson gson = new GsonBuilder().create();
    String json = gson.toJson(user);
    JsonParser p = new JsonParser();
    JsonObject obj = p.parse(json).getAsJsonObject();

    JsonObject jsonAction = new JsonObject();
    jsonAction.addProperty("type", "registration");

    JsonObject sendMsg = new JsonObject();
    sendMsg.add("action", jsonAction);
    sendMsg.add("user", obj);
    writer.println(sendMsg.toString());
    writer.flush();
}