javascript - json嵌套查找在javascript中使用基于字符串的键

标签 javascript json node.js

使用这样的 javascript json 对象:

var data = {
    blog : {
        title: "my blog",
        logo: "blah.jpg",
    },
    posts : [
        {
            title: "test post",
            content: "<p>testing posts</p><br><p>some html</p>"
        },
    ]
}

var lookup = "blog.title" //this gets generated from a template file

现在我知道你可以做类似的事情,但这些并不能完全满足我的需要:

console.log(data['blog']);    //works
console.log(data.blog.title); //works
console.log(data['blog']['title']); //works, but i dont know the depth of the lookup

但我需要能够执行类似下面代码的操作,因为我无法对结构进行硬编码,它每次都会生成并存储在查找中。我是否必须使用字符串切割和递归来构建此功能?我真的希望不会

console.log(data['blog.title']); //does not work
console.log(data[lookup]);       //does not work

编辑....

好的,可能找到了解决方法。我不知道这是安全的还是推荐的做法,所以对此的评论会很好。或者替代方法。因此,将其与上面的代码结合起来。

var evaltest = "var asdf ="+JSON.stringify(data)+";\n"
evaltest += "asdf."+lookup
console.log(eval(evaltest)) //returns correctly "my blog" as expected

最佳答案

你可以使用 dottie https://www.npmjs.org/package/dottie ,它允许您使用字符串深入遍历对象

var values = {
    some: {
        nested: {
            key: 'foobar';
        }
    }
}

dottie.get(values, 'some.nested.key'); // returns 'foobar'
dottie.get(values, 'some.undefined.key'); // returns undefined

关于javascript - json嵌套查找在javascript中使用基于字符串的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22246493/

相关文章:

javascript - 在自定义对话框上呈现 React 按钮时 OnClick 不起作用

javascript - Firebase Web 客户端将 JSON 上传到 Cloud Storage

node.js - Appcelerator Titanium 错误 Windows 10

javascript - jQuery map 中的箭头函数

javascript - 函数什么时候应该在 hapijs 路由调用中返回

java - 解析JSON对象: Call the constructor after parsing?

javascript - 允许在 nodejs 中每毫秒运行一次以上 setInterval

angularjs - 将 ngRoute 与 Express 后端一起使用

javascript - 使用 _Underscore 从嵌套对象创建值数组

javascript - json.js 和 json2.js 有什么用?