Javascript/JSON 获取给定子节点的路径?

标签 javascript json xpath

如何获取对象的给定子节点的 JSON 路径?

例如:

var data = {
    key1: {
        children: {
            key2:'value',
            key3:'value',
            key4: { ... }
        }, 
    key5: 'value'
}

给出了一个引用 key4 的变量。现在我正在寻找绝对路径:

data.key1.children.key4

有什么办法可以用 JS 完成吗?

提前谢谢你。

最佳答案

所以你有一个值为“key3”的变量,你想知道如何根据这个字符串的值动态访问这个属性?

var str = "key3";
data["key1"]["children"][str];

编辑

哇,我不敢相信我第一次尝试就得到了这个。它可能有一些错误,但它适用于您的测试用例

LIVE DEMO

var x = data.key1.children.key4;

var path = "data";
function search(path, obj, target) {
    for (var k in obj) {
        if (obj.hasOwnProperty(k))
            if (obj[k] === target)
                return path + "['" + k + "']"
            else if (typeof obj[k] === "object") {
                var result = search(path + "['" + k + "']", obj[k], target);
                if (result)
                    return result;
            }
    }
    return false;
}

var path = search(path, data, x);
console.log(path); //data['key1']['children']['key4']

关于Javascript/JSON 获取给定子节点的路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8790607/

相关文章:

javascript - 输入值有时不适用

javascript - Dojo On.change 函数

json - 限制 Swift 4 中的 JSON 响应

python - python 的 lxml 中的正则表达式

c# - 数值太小或误差太大

javascript - mongoose find({}) 不触发回调

javascript - 根据后面出现的所需项目数组对对象数组进行排序

javascript - backbonejs-当 json 响应用域书包装时,无法渲染集合对象的字段

java - JAX-RS 2 打印 JSON 请求

selenium - 从哪里开始 webdriver 使用 xpath 查找元素