在java中,我有一个类似下面的hashmap
Map<String, List<Employee>> = new HashMap<String, List<Employee>>();
我需要将上面的地图转换为json对象
我尝试了什么: -
使用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);
然后在请求属性
中添加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)
答案 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());