如何使用jQuery从JSON文件中检索特定数据

时间:2013-11-07 19:23:52

标签: javascript jquery json

我正在尝试使用jQuery读取本地存储在我系统中的JSON文件。我想从该文件中获取一些特定数据。我们假设文件如下所示:

{"statements":[{"subject":{"uriString":"A","localNameIdx":-1},
"predicate":{"uriString":"B","localNameIdx":-1},
"object":{"uriString":"C"}}

这是Java程序编写的。我的问题是:如何使用jQuery从此文件中检索以下数据A, B and C?我读取JSON文件的代码是:

var arr = [];
$.getJSON("/Users/docs/sample.json", function(data) {
    $.each(data.statements, function(i, val) {
        arr.push(val);
    }
}

代码无法检索A, B and C。谁能帮助我如何获取这些元素并将它们存储在jQuery中的数组中。非常感谢您的帮助。

3 个答案:

答案 0 :(得分:0)

行。请记住JSON(JavaScript Object Notation)只是一个JavaScript对象,有一个有趣的外套。因此,如果你有一个JSON字符串和Jquery,你可以使用parseJSON方法将字符串重新水化为真正代表的对象。

比如......

var obj = jQuery.parseJSON( '{ "name": "John" }' );
alert( obj.name === "John" );

答案 1 :(得分:0)

你应该尝试这样的事情

$.each(data.statements[0], function(i, v){
    // arr.push(v.uriString);
    console.log(v.uriString); // will print A B C
});

但是,在这种情况下,您的object应该是这样的

var data = {
    "statements":[
        {
            "subject":{"uriString":"A","localNameIdx":-1},
            "predicate":{"uriString":"B","localNameIdx":-1},
            "object":{"uriString":"C","localNameIdx":-1}
        }
    ] // <-- mising in your question
}; // <-- mising in your question

在你的问题中,我没有找到结束]},我认为这是一个错字,请检查this example.

答案 2 :(得分:0)

您只是在data.statements进行循环播放。这只会为您提供一个data.statements.subject项,即{"uriString":"A","localNameIdx":-1}

看起来你想获得每个项目的uriString,无论该项目的嵌套方式如何。要做到这一点,最简单的方法是定义一个递归函数。

    function getUriStrings( obj ){
        var results = [];
        for(var key in obj){
            if(key == "uriString"){
                results.push(obj[key]);
            }
            else if(obj[key] != null && typeof obj[key] === 'object'){
                results.push.apply(results, getUriStrings(obj[key]));
            }

        }
        return results;
    }

然后你的代码就是:

    var arr = [];
    $.getJSON("/Users/docs/sample.json", function(data) {
        arr = getUriStrings( data );
    }