使用dojox.json.query获取父节点

时间:2011-12-28 13:50:04

标签: javascript json dojo

我正在使用dojox.json.query来获取JSON结构中的节点,如上所示:

{"data" : [ {
    "response" : [ {
        "key" : "value",
        "key1" : "value1",
        "key2" : "value2",
        "key3" : "value3",
        "key4" : "",
        "details" : [ {
            "key" : "",
            "key1" : "value11",
            "key2" : "",
            "key3" : "value33",
            "key4" : "",
            "details" : [ {
                "key" : "KEY",
                "key1" : "value111",
                "key2" : "value222",
                "key3" : "value333",
                "key4" : "",
                "details" : [ {
                    "key" : "",
                    "key1" : "value1111",
                    "key2" : "",
                    "key3" : "getThisOne",
                    "key4" : "",
                    "details" : [ {
                        "key" : "",
                        "key1" : "value11111",
                        "key2" : "",
                        "key3" : "value33333",
                        "key4" : "TARGET_1",
                        "details" : []
                    }, {
                        "key" : "",
                        "key1" : "value111111",
                        "key2" : "",
                        "key3" : "value333333",
                        "key4" : "TARGET2_1",
                        "details" : []
                    } ]
                } ]
            } ]
        } ]
    } ]
} ]
}

var evaluator = dojox.json.query("..[?key='value']");
var jsonQuery = evaluator(data.response);

我想知道是否可以获得包含父值getThisOne的对象,一旦我收到了他的一个儿子,如Target_1Target_2。有没有人知道如果没有关于它的文档,我怎么能得到它。

2 个答案:

答案 0 :(得分:0)

好吧,看起来这是JSONPath / JSONQuery中XPath缺少的功能之一。换句话说:这是您实际应该使用XML的那一次。数据越分层,XML的好处就越重要。

也就是说,您可以尝试使用此选择器:"..[?key3='getThisOne']/[?key='value']"仅获取具有key3getThisOne的父对象的对象。

答案 1 :(得分:0)

根据商店关系模型格式化你的json会不会更容易?

喜欢使用_reference:#idOfTheItem 并将所有项目放在json中的0级。那样你可以使用_reference构建层次结构,并使用dojo存储到例如getParent(),或者对商店进行查询?