0

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

これが私の Ajax 応答であるため、この文字列を JavaScript に渡しました。

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

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


               }
}

これは正常に動作していますが、最初にこのようなデータをフェッチしたいルートの「ルート」からデータをフェッチしたい たとえば、ルートを読み取るときにいくつかのデータがありますbhanu@gmail.comを取得しましたBhanuからデータをフェッチしたいここで、hari@gmail.com のようなデータを取得しました。また、このようhariのデータを取得したいのですが、どうすればいいですか?誰か助けてください

4

3 に答える 3

1

リストは JavaScript 配列になるため、たとえば次のように使用できます。

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

サンプルデータを指定すると、「hari@gmail.com」がポップアップするはずです。

必要に応じて、マップのキーを一覧表示する方法の詳細については、JavaScript オブジェクトのプロパティを一覧表示する方法を参照してください。

于 2013-09-11T06:55:13.430 に答える
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
}
于 2013-09-11T06:56:01.560 に答える
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]は実際には配列です。

于 2013-09-11T06:56:02.780 に答える