Javascript:如何将JSON点字符串转换为对象引用

iLo*_*och 2 javascript json

我有一个字符串:items[0].name我想要应用于JSON对象:{"items":[{"name":"test"}]}它包含在变量中test.我想将该字符串应用于对象以搜索它(test.items[0].name).我只能想到一种方法:使用我自己的函数解析方括号和点.还有其他方法可以做到这一点吗?也许使用eval?(尽管我很乐意避免......)

为清楚起见:我有一个JSON对象,其中的内容实际上是无关紧要的.我需要能够像这样查询对象:theobject.items[0]这显然是JSON对象的正常行为.问题是,查询字符串(即.items[0])是未知的 - 如果您愿意,可以将其称为用户输入 - 它实际上是一个字符串(var thisIsAString = "items[0]").所以,我需要一种方法来附加查询字符串theobject,以便它返回值theobject.items[0]

xia*_*oyi 8

function locate(obj, path) {

  path = path.split('.');
  var arrayPattern = /(.+)\[(\d+)\]/;
  for (var i = 0; i < path.length; i++) {
    var match = arrayPattern.exec(path[i]);
    if (match) {
      obj = obj[match[1]][parseInt(match[2])];
    } else {
      obj = obj[path[i]];
    }
  }

  return obj;
}

var name = locate(test, 'items[0].name');
Run Code Online (Sandbox Code Playgroud)