我正在使用SpringMVC。在我的控制器中,我创建了一个JSON对象,并将该对象传递给JavaScript。如何在JavaScript中读取该对象?
我的Map
对象
Map<String rootNode,List<String>> map = new HashMap<String rootNode,List<String>();
String rootNode = "bhanu";
ArrayList<String> al = new ArrayList<String>();
for( int i = 0; i < UserProfile.size; i++ ) {
al.add( userProfile.get( i ) );
}
map.put( userProfile, al );
最后,我的Map
对象包含以下数据:
{
"Bhanu":["hari@gmail.com","balu@gmail.com","santha@gmail.com"],
"root":["bhanu@gmail.com","anu@gmail.com","apar@gmail.com"],
"hari":["bhanuprasad@gmail.com","sravya@gmail.com","mahesh@gmail.com"],
"balu":["rama@gmail.com"]
}
现在我将此对象转换为GSon
:
Gson gson = new GSon();
String orgChartUsers = gson.toJson(map);
现在我将此字符串传递给JavaScript,因为这是我的Ajax响应:
function orgUsers( result ) {
var orgObject = JSON.parse( result );
for(var name in result) {
console.log(name + "=" + result[name]);
}
}
这工作正常,但我想获取这样的数据 首先我想从root中的“root”获取数据我在读root时有一些数据,例如我有 bhanu@gmail.com 现在我想获取数据从 Bhanu 这里我得到了一些数据,比如 hari@gmail.com 我想再次获取 hari 的数据我希望我该怎么做这个任何人帮助我
答案 0 :(得分:1)
您的列表将成为javascript数组,因此您可以使用:
window.alert (orgObject["Bhanu"][0]);
根据您的示例数据,它应弹出“hari@gmail.com”。
有关如何列出地图键的详细信息,请参阅How to list the properties of a JavaScript object。
答案 1 :(得分:0)
结果将是对象或数组。
要迭代对象,可以使用for-in循环
for (var key in obj) {
if(obj.hasOwnProperty(key)) {
// do something here
}
}
要遍历数组,您可以使用普通循环:
for (var i = 0, ilen = array.length; i < ilen; i += 1) {
// do something here
}
答案 2 :(得分:0)
这是最简单的方法
var result = {"Bhanu":["hari@gmail.com","balu@gmail.com","santha@gmail.com"],"root":["bhanu@gmail.com","anu@gmail.com","apar@gmail.com"],"hari":["bhanuprasad@gmail.com","sravya@gmail.com","mahesh@gmail.com"],"balu":["rama@gmail.com"]};
for(var name in result) {
console.log(name + "=" + result[name]);
}
输出:
Bhanu=hari@gmail.com,balu@gmail.com,santha@gmail.com
root=bhanu@gmail.com,anu@gmail.com,apar@gmail.com
hari=bhanuprasad@gmail.com,sravya@gmail.com,mahesh@gmail.com
balu=rama@gmail.com
请记住,数组实际上是强制转换为字符串。所以 result [name] 实际上是一个数组。