我正在尝试使用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中的数组中。非常感谢您的帮助。
答案 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 );
}