将 Map<String, Object> 转换为 json

Raz*_*zib 3 java json jsp gson

我有一个名为responseObj 的地图

Map<String, object> responseObj = new HashMap<String, Object>();
Run Code Online (Sandbox Code Playgroud)

我在responseObj中添加了一些值,如下所示 -

responseObj.put("canApprove", true); //1
responseObj.put("approvers", userList);
Run Code Online (Sandbox Code Playgroud)

userList是一个列表或用户 -

List<User> userList = new ArrayList<User>();
Run Code Online (Sandbox Code Playgroud)

User 类中的用户对象 -

class User {
 private int userId;
 private int roleId;
}
Run Code Online (Sandbox Code Playgroud)

现在我有一些问题——

  1. 是否可以将 转换responseObj为 json 以便"canApprove"成为"approvers"json 的键(请参阅下面的代码片段)以及如何制作它?

    {
     "canApprove" : true,
     "approver": [
    {
      "userId": 309,
      "roleId": 2009
    },
    {
      "userId": 3008,
      "roleId": 2009
    },
    
    Run Code Online (Sandbox Code Playgroud)

    ] }

  2. 如果我将其转换为 json 并从 jsp 获取响应,我是否可以在 jsp 中获取相应的布尔值,其中引用"canApprove"an ?ObjectresponseObj

  3. 我可以将Class"userId" and "roleId"中的 JSON持久化吗?User

ToY*_*nos 5

尝试这个 :

public static class User
{
    public User(int userId, int roleId)
    {
        this.userId = userId;
        this.roleId = roleId;
    }
    private int userId;
    private int roleId;
    public int getUserId()
    {
        return userId;
    }
    public int getRoleId()
    {
        return roleId;
    }
    public void setUserId(int userId)
    {
        this.userId = userId;
    }
    public void setRoleId(int roleId)
    {
        this.roleId = roleId;
    }
}
Run Code Online (Sandbox Code Playgroud)

测试 :

Map<String, Object> responseObj = new HashMap<String, Object>();
List<User> userList = new ArrayList<User>();
userList.add(new User(1, 1));
userList.add(new User(2, 2));
responseObj.put("canApprove", true); //1
responseObj.put("approvers", userList);

System.out.println(new JSONObject(responseObj));
Run Code Online (Sandbox Code Playgroud)

印刷 :

{"approvers":[{"userId":1,"roleId":1},{"userId":2,"roleId":2}],"canApprove":true}
Run Code Online (Sandbox Code Playgroud)

(已格式化)