简体   繁体   中英

How to fetch data from JSON object in JavaScript?

I am working on SpringMVC. In my controller I create a JSON object and I pass that object to JavaScript. How can I read that object in JavaScript?

My Map object

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 );

At last my Map object has this data:

{
   "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"]
}

Now I convert this object with GSon :

Gson gson = new GSon();
String orgChartUsers = gson.toJson(map);

Now I passed this string to JavaScript because this is my Ajax response:

function orgUsers( result ) {
    var orgObject = JSON.parse( result );  

         for(var name in result) {
                console.log(name + "=" + result[name]);


               }
}

This is working fine but i want to fetch data like this first i want to fetch data from "root" in root i have some data when i read root for example i got bhanu@gmail.com now i want to fetch the data from Bhanu here i got some data like hari@gmail.com again i want to fetch data for hari like this i want how can i do this any one help me

Your lists will become javascript arrays, so for example you could use:

window.alert (orgObject["Bhanu"][0]);

which should pop up "hari@gmail.com" given your example data.

See How to list the properties of a JavaScript object for details of how to list the keys of your map, should you need this.

The result will be either an object or array.

To iterate over objects you can use the for-in loop

for (var key in obj) {
    if(obj.hasOwnProperty(key)) {
        // do something here
    }
}

To iterate over an array you can use a normal loop:

for (var i = 0, ilen = array.length; i < ilen; i += 1) {
    // do something here
}

Here is the most simple way

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]);
}

This outputs:

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

Have in mind that the arrays are actually cast to a string. So result[name] is actually an array.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM