如何使用其他地方指定的访问信息访问嵌套的json对象而不使用eval或迭代?

时间:2012-09-03 15:19:08

标签: javascript json navigation

我有一个类似的JSON对象;

 var data = {
 Name : "test name",
 Type : "test type",
 VendorInfo :{
               FirstName : "Vendor First Name",
               LastName : "Vendor Last Name",
               Address : "Vendor Address",
               City : "Vendor City",
               ZipCode : "Zip"
             }
 }

现在另外我想保留有关如何访问data var

中字段的信息
var accessInfo=[
    { fieldName : "Name", actionName : "Edit" },
    { fieldName : "Type", actionName : "Edit" },
    :
    :etc..
 ]

现在在我的javascript中我可以通过for循环遍历accessInfo数组,类似于;

for(var i=0;i<accessInfo.length;i++){
data[accessInfo[i].fieldName] = "changed field";
}

适用于顶级字段,但我无法弄清楚如何访问层次结构中较低的字段..如data.VendorInfo.FirstName,data.VendorInfo.LastName等。

这一切都可能吗?我尝试了“VendorInfo.FirstName”和[VendorInfo] [FirstName],但没有去..

1 个答案:

答案 0 :(得分:0)

您只需要解析访问规范以遍历目标对象。你可以使用这样的函数:

function getProp(obj, propName) {
   var prop;
   var props = propName.split('.');
   for (var i = 0; i < props.length; i++) {
      prop = obj[props[i]];
      if (typeof prop === 'null' || typeof prop === 'undefined') return prop;
   }
  return prop;
}