将Map <string,object =“”>转换为json </string,>

时间:2014-11-13 14:48:33

标签: java json jsp gson

我有一张名为responseObj的地图

Map<String, object> responseObj = new HashMap<String, Object>();

我在responseObj中添加了一些像这样的值 -

responseObj.put("canApprove", true); //1
responseObj.put("approvers", userList);

userList是一个列表或用户 -

List<User> userList = new ArrayList<User>();

User类中的用户对象 -

class User {
 private int userId;
 private int roleId;
}

现在我有一些问题 -

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

    {
     "canApprove" : true,
     "approver": [
    {
      "userId": 309,
      "roleId": 2009
    },
    {
      "userId": 3008,
      "roleId": 2009
    },
    

    ]     }

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

  3. 我可以将"userId" and "roleId"保留在User类的JSON中吗?

4 个答案:

答案 0 :(得分:4)

试试这个:

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;
    }
}

测试:

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));

打印:

{"approvers":[{"userId":1,"roleId":1},{"userId":2,"roleId":2}],"canApprove":true}

(formatted)

答案 1 :(得分:2)

您可以尝试使用JSONObject将地图解析为JSON。

maven依赖是:

    <dependency>
        <groupId>org.json</groupId>
        <artifactId>json</artifactId>
        <version>20140107</version>
    </dependency>

稍后创建一个新的JSON对象并传递地图

JSONObject obj = new JSONObject(responseObj);

并将对象返回此Web客户端。

答案 2 :(得分:0)

new com.google.gson.Gson().toJson(responseObj);

答案 3 :(得分:0)

您可以使用一些json序列化库为您完成此项工作,例如fastjsongson

1.将依赖项jar导入到项目中,如果您正在使用maven,则将<dependency>节点添加到pom.xml中,或者只是将jar放入项目的库文件夹中

2. String jsonString = JSON.toJSONString(responseObj);(使用fastjson)