2015-07-20 118 views
2

在Java中,我有一个像下面将自定义对象的地图转换为json对象?

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

我需要将上面的地图转换成JSON对象是一个HashMap

我试了一下: -

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

然后在请求属性

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

添加jsonObject但是当我找回它在JavaScript我得到的JSONObject

{emp_10:[[email protected]]} 

的价值正如你可以在上面看到我得到的价值[email protected]不是它的性能为何如此?

也没有更好的方法,我可以自定义对象Map<String, List<Employee>>以JSON对象的HashMap的转换,而无需使用替代HashMap和JsonArray,而不是名单 的JSONObject?

我使用已经在我的项目库下方,打开即可使用,如果需要

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

实现toString(),因为它似乎默认的toString被调用和返回 – vinayakj

+0

你需要重写toString方法 – Zion

+0

@ user3198603对象引用 - 你检查了我的答案吗?它对你有用吗? – nikhil

回答

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