我有一个字符串: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/