動的に構築されたキーパスを介して、ネストされた JSON 辞書にアクセスしたいと考えています。
キーパスは、標準の JSON ドットおよび添え字演算子を使用します。(.
と[x]
)
例:
var data =
{"title": "a_title",
"testList": [
{
"testListItemKey": "listitem1"
},
{
"testListItemKey": "listitem2",
"deepTestList": [
{
"testListItemKey": "listitem1",
"testListItemDict":{
"subTitle": "sub_title",
}
}]
}]
}
キーパス文字列の例は次のとおりです。
data.feedEntries[0].testList[2].deepTestList[1].testListItemDict.subTitle
これまでに見つけた最も簡単な実用的な解決策は、eval または関数コンストラクターを使用することです。
function valueForKeypPath(data, keyPath) {
"use strict";
var evaluateKeypath = new Function('data', 'return data.' + keyPath);
return evaluateKeypath(data);
}
リモート エンドポイントから受け取る JSON データを完全に信頼することはできないため、eval などは避けたいと思います。