将自定义对象的地图转换为json对象?
问题描述:
在Java中,我有一个像下面将自定义对象的地图转换为json对象?
Map<String, List<Employee>> = new HashMap<String, List<Employee>>();
我需要将上面的地图转换成JSON对象是一个HashMap
我试了一下: -
使用jsonObject
代替HashMap
和JsonArray
而不是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)
答
我认为你需要有在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());
实现toString(),因为它似乎默认的toString被调用和返回 – vinayakj
你需要重写toString方法 – Zion
@ user3198603对象引用 - 你检查了我的答案吗?它对你有用吗? – nikhil