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

标签 javascript json

我有一个字符串:items[0].name,我想将其应用于 JSON 对象:{"items":[{"name":"test"}] } 包含在变量 test 中。我想将该字符串应用于对象以便对其进行搜索 (test.items[0].name)。我只能想到一种方法来做到这一点:使用我自己的函数解析方括号和点。还有其他方法可以做到这一点吗?也许使用评估? (即使我很想避免这种情况...)

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

处的值

最佳答案

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');

关于Javascript:如何将 JSON 点字符串转换为对象引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13355278/

相关文章:

javascript - 为什么我的音节被取回,但我的单词却没有被取回?

javascript - react 语义 Ui 按钮悬停

javascript - 在父组件之间切换 bool 状态

angularjs - HTTP POST 变成 OPTIONS AngularJS

javascript - 如何更改json数组所有节点的值

javascript - php中获取dropdownlist的值

javascript - JQuery: .hide() 不是一个有效的函数

java - Bean 输入未由 jax-rs 填充

javascript - JSON.解析 : unexpected character at line 1 column 2 of the JSON data (HTML)

python - 使用 dropbox API 下载指定文件夹中的所有图像,而不是子文件夹