2012-03-08 8 views
4

だから私はAJAX経由でJSONを取得していますが、再構成する必要があります。これは、変数に含まれる文字列をネストされたオブジェクトのプロパティ名として使用することを意味します。JavascriptでJSONのプロパティ名として変数の文字列を使用していますか?

しかし、Javascriptではこれが許可されていません。値を読み取る代わりに、変数をリテラル文字列として扱います。

は、ここに抜粋です:

var pvm.exerciseList = []; 

$.get('folder_get.php', function(data){ 
    var theList = $.parseJSON(data); 
    $.each(theList, function(parentFolder, files) { 
     var fileList = []; 
     $.each(files, function(url, name) { 
      thisGuy.push({fileURL: url, fileName: name}); 
     }); 
     pvm.exerciseList.push({parentFolder: fileList}); 
    }); 
}); 

は、この問題を回避とにかくありますか?私は "parentFolder"に含まれる文字列を抽出する必要があります。今、JSはそれを文字どおりに解釈しています。

答えて

9

[]構文を使用して、変数をプロパティ名として解決します。これには仲介が必要な場合があります{}

$.get('folder_get.php', function(data){ 
    var theList = $.parseJSON(data); 
    $.each(theList, function(parentFolder, files) { 
     var fileList = []; 
     $.each(files, function(url, name) { 
      thisGuy.push({fileURL: url, fileName: name}); 
     }); 

     // Make an object  
     var tmpObj = {}; 
     // And give it a property with the current value of parentFolder 
     tmpObj[parentFolder] = fileList; 
     // Then push it onto the array 
     pvm.exerciseList.push(tmpObj); 
    }); 
}); 
+0

恐ろしいです!本当にありがとう。 Javascriptにはすべてのコーナーに隠れている小さな「つかの間」があります。 –

+1

@BenjaminAllison非常に柔軟でニュアンスのある言語で、詳細に学習する価値があります。あなたは尋ねたことではありませんが、Douglas Crockforの_JavaScriptを読むことをお勧めします。言語の暗い路地や明るい場所がどこにあるのかを把握するのに良いパーツ。 –

+0

私はそれを約3回読んだことがあり、おそらくそれをもう20回読むでしょう!マイケルに感謝します。 –

関連する問題