【问题标题】:Find the path of JSON for a key value查找键值的 JSON 路径
【发布时间】:2013-09-12 07:54:53
【问题描述】:
jSon = {
        "id":"node1",
        "name":"Languages",
        "rel":"",
        "children":1,
        "step":1,
        "path":1,
        "nodes":[
            {
                "id":"node2",
                "name":"Java",
                "rel":"Pure Object Oriented Prog",
                "children":1,
                "step":2,
                "path":2,
                "nodes":[
                    {
                        "id":"node3",
                        "name":"C#",
                        "rel":"Framework",
                        "children":0,
                        "step":3,
                        "path":3,
                        "nodes":[]
                    },{
                        "id":"node4",
                        "name":"C++",
                        "rel":"OOPS",
                        "children":0,
                        "step":3,
                        "path":4,
                        "nodes":[]
                    }]
            }]
    };

对于上述结构,如何获取 id(key) = node3(value) 的路径

(即)jSon.nodes[0].nodes[1].id

这样我就可以推送新对象(即)jSon.nodes[0].nodes.push(newjSon);

或者有没有其他方法可以在这个结构的特定位置添加新对象... 请建议一些 javascript 代码.. 没有 jQuery

【问题讨论】:

  • 你到底在问什么?您是在问如何访问特定节点并将其推送到其中,还是在问是否有任何方法可以简化推送到嵌套在对象中非常深的节点的过程?
  • @大卫。是的,我想将新节点推到特定位置...
  • 您是否考虑过为您的对象编写一个函数来简化将节点推入其中的过程?这对于自动化代码如JSon.nodes[0].nodes.push(newJSon); 很有用
  • @David 你这么说,我应该改变 JSON 结构..
  • 啊,是的,从头开始。这是个坏主意。但是,如果您想简化它,您仍然应该编写一个函数,该函数将采用JSON.parse(JSon) 并适当地推送。

标签: javascript json jsonpath


【解决方案1】:
var somethingElse = "data_you_want_to_push"; // not in JSON
var myObject = JSON.parse(jSon);

myObject.nodes.forEach ( function(singleNodeLevel1){
   singleNodeLevel1.nodes.push(somethingElse);
});

jSon = JSON.stringify(myObject);

如果需要,您可以在 forEach 循环中添加计数器并增加它,或者直接使用

if (singleNodeLevel1.id === "something") singleNodeLevel1.nodes.push(somethingElse);

这是没有 JQuery 的,但需要在您的浏览器中支持 ECMAScript5,IE8 及更早版本不支持它,但如果您的浏览器不支持它,您可以为它添加一个“shim”

【讨论】:

    猜你喜欢
    • 2021-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-24
    • 2011-04-22
    • 2019-01-07
    • 2020-03-22
    • 1970-01-01
    相关资源
    最近更新 更多