我有这个HashMap<字符串,Employee>()对象,我将其转换为JSONArray,如下所示
JSONArray jarray = JSONArray.fromObject(myHashMap);
请注意,映射中的键始终是数字文本,但其数据类型为 String。
下面是用于将 json 字符串设置为响应的代码。
response.setContentType("text/text;charset=utf-8");
response.setHeader("cache-control", "no-cache");
PrintWriter out = response.getWriter();
out.println(jarray.toString());
out.flush();
我得到的 json 字符串是
[{"1":{"empAge":32,"empEmail":"name@mail.com","empId":1,"empName":"myname","empTel":"33445"}]
如何在键值为 1 的地图中获取 empName 的值?
$.ajax({
type: "POST",
url: "/MyApp/TestAction.do",
dataType :"json",
success: function(response){
alert(response.1[0].empName);// I get java script error in this statement
},
error: function(e){
alert('Error: ' + e);
}
});
您使用了错误的标头:
response.setContentType("text/text;charset=utf-8");
将其更改为:
response.setContentType("application/json;charset=utf-8");
目前,您将其作为字符串获取,因此不能将其用作对象,一旦更改标头,您将将其作为 JSON 对象获取并能够使用它。
作为旁注,"1"不是一个很好的键,如果你能把它换成一个更具描述性的字符串,我建议你这样做。