如何从JavaScript中的JSON对象获取数据?

时间:2013-09-11 06:52:18

标签: javascript json

我正在使用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 现在我想获取数据从 Bh​​anu 这里我得到了一些数据,比如 hari@gmail.com 我想再次获取 hari 的数据我希望我该怎么做这个任何人帮助我

3 个答案:

答案 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] 实际上是一个数组。