1

JSON のトラバーサル パスを最初のレベルを超えて変数に格納することは可能ですか?

変数で JSON トラバーサル パスを定義します。

var jsonPathLink = 'sequenceId'; 
var jsonPathText = 'answer.body';

jQuery AJAX 呼び出し。(不要な設定はすべて削除しましたが、追加のコードが必要な場合はお知らせください。)

$.ajax({
  success: function(data){
    if(data.length > 0){
      for(x in data){
        console.log(data[x][jsonPathLink]); // This works.

        console.log(data[x][jsonPathText]);  // This does not work.
        console.log(data[x] + jsonPathText); // This also does not work.
      }
    }
  }
});
4

1 に答える 1

3

次のような traverseObject 関数を記述できます。

function traverseObj(obj, path) {

    var arr = path.split('.'),
        len = arr.length,
        i = 0,
        ret;

    for ( ; i<len; i+=1 ) {

        // on the first iteration, the passed object
        // is cached in the ret-variable.
        ret = !i
            ? obj[arr[i]]
            : ret[arr[i]];

    }

    return ret;

}

パスの単一の要素は、それらを反復することによって、渡された obj に適用されます。結果はキャッシュされて返されます。

例: http://jsfiddle.net/k8GWz/

于 2012-06-25T19:23:35.473 に答える