0

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

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

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

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

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

4

3 回答 3

0

好的。记住 JSON(JavaScript 对象表示法)只是一个 JavaScript 对象,上面有一件有趣的外套。所以如果你有一个 JSON 字符串,而 Jquery,你可以使用 parseJSON 方法将字符串重新水化成真正代表的对象。

如...

var obj = jQuery.parseJSON( '{ "name": "John" }' );
alert( obj.name === "John" );
于 2013-11-07T19:29:50.430 回答
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

在您的问题中,我没有找到结尾]},我认为这是一个错字,请查看此示例。

于 2013-11-07T19:34:24.597 回答
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 );
    }
于 2013-11-07T19:41:37.333 回答