将自定义对象的地图转换为json对象?

时间:2015-07-20 17:36:37

标签: javascript java json dictionary

在java中,我有一个类似下面的hashmap

Map<String, List<Employee>> = new HashMap<String, List<Employee>>();

我需要将上面的地图转换为json对象

我尝试了什么: -

使用jsonObject代替HashMapJsonArray代替list

 com.amazonaws.util.json.JSONObject  jsonObject = new com.amazonaws.util.json.JSONObject();
 com.amazonaws.util.json.JsonArray empList = new JsonArray();
 empList.add(empObject)
 jsonObject.put("some String", empList);

然后在请求属性

中添加jsonObject
 request.setAttribute("empMap", jsonObject.toString() );

但是当我在javascript中检索它时,我得到了jsonObject的值

  {emp_10:[com.val.Emp@4b7b4bc5]}

正如您在上面所看到的,我得到的值com.val.Emp@4b7b4bc5不是它的属性为什么会这样?

还有一种更好的方法可以将自定义对象(即Map<String, List<Employee>>)的hashmap转换为json对象而不使用 jsonObject而不是HashMap和JsonArray而不是list?

我已经在项目中的库下使用了,如果需要,可以打开使用任何新库

Jettison Library (org.codehaus.jettison.json.JSONObject)
json-lib(net.sf.json.JSONObject)
apache json library (com.amazonaws.util.json.JSONObject)

1 个答案:

答案 0 :(得分:0)

我认为你需要在java端有一个额外的帮助函数

public JSONObject asJSON(Employee employee) {
     ObjectMapper mapper = new ObjectMapper();
     return new JSONObject(mapper.writeValueAsString(employee));
}

并代替在以下内容中添加empObject,添加更新后的值asJSON(empObject)

 empList.add(empObject)

此外,请删除.toString()

request.setAttribute("empMap", jsonObject.toString());