Javascript 使用jQuery进行JSON解析不起作用
我有一个类似这样的JSON-Javascript 使用jQuery进行JSON解析不起作用,javascript,jquery,json,Javascript,Jquery,Json,我有一个类似这样的JSON- var json = { "http://data.abc.net/uml/extensions#0001" : { "http://www.w3.org/2000/01/rdf-schema#label" : [ { "type" : "literal" , "location" : "ASIA" , "datatype" : "http://www.w3.org
var json = {
"http://data.abc.net/uml/extensions#0001" : {
"http://www.w3.org/2000/01/rdf-schema#label" : [ {
"type" : "literal" ,
"location" : "ASIA" ,
"datatype" : "http://www.w3.org/2001/XMLSchema#string"
}]
}
,
"http://data.abc.net/uml/extensions#0002" : {
"http://www.w3.org/2000/01/rdf-schema#label" : [ {
"type" : "literal" ,
"location" : "EUROPE" ,
"datatype" : "http://www.w3.org/2001/XMLSchema#string"
}]
}
}
var allRegions = [];
var output = $.parseJSON(json);
var list = output.data;
$.each(list,function(index, val){
allRegions.push(val.location);
});
我正试图使用JQUERY解析它,并希望将值存储在一个名为allREgions的数组中。我已经写了这样的代码-
var json = {
"http://data.abc.net/uml/extensions#0001" : {
"http://www.w3.org/2000/01/rdf-schema#label" : [ {
"type" : "literal" ,
"location" : "ASIA" ,
"datatype" : "http://www.w3.org/2001/XMLSchema#string"
}]
}
,
"http://data.abc.net/uml/extensions#0002" : {
"http://www.w3.org/2000/01/rdf-schema#label" : [ {
"type" : "literal" ,
"location" : "EUROPE" ,
"datatype" : "http://www.w3.org/2001/XMLSchema#string"
}]
}
}
var allRegions = [];
var output = $.parseJSON(json);
var list = output.data;
$.each(list,function(index, val){
allRegions.push(val.location);
});
但这是行不通的。这里出了什么问题?您不需要使用$.parseJSON,只需执行以下操作:
var allRegions = [];
$.each(json, function(idx, val) {
$.each(val, function(idxSec, valSec) {
allRegions.push(valSec[0].location);
});
});
console.log(allRegions);
您的第一个问题是您没有JSON。您有一个JavaScript对象文本。您不需要解析它(因为解析JSON会将JSON转换为对象),尝试这样做会首先将其转换为字符串(这不是有效的JSON) 替换
var输出=$.parseJSON(json)代码>带有var输出=json代码>
第二个问题是对象中没有data
属性。您的属性是http://data.abc.net/cib/cia/uml/extensions#0001
和http://data.abc.net/cib/cia/uml/extensions#0002
替换var list=output.data代码>带有var列表=输出
您可以跳过这两个步骤,只需首先将数据应用于正确的对象
第三个问题是,在循环它们时,值是具有一个属性的对象(http://www.w3.org/2000/01/rdf-schema#label
),因此您无法访问位置
要实现这一点,您必须读取该属性的值,然后获取其值所在数组的第一个索引,然后访问该索引的位置
尽我所能尝试格式化:没有有效的json}],
你在亚洲的位置有一个尾随逗号。检查你的JSON有效性,我会纠正这一点。我想现在JSON是有效的,谢谢Kunj,在网站上检查过了,你能帮我解析一下吗?嗨,Sudhir,JSFIDLE不起作用,你能检查一下吗,伙计?@somsuvra似乎很好:[“亚洲”,“欧洲”]是输出,这不是需要做的吗。。?检查浏览器的控制台plsI并没有拒绝邀请这个伙伴,我只是接受了这个,事实上我还不能拒绝或同意。昆汀,你为什么用这个-val['将其作为'location'是数组中的第二个成员。@somsuvra-在数据中有两个数组,但它们都只有一个成员。http://www.w3.org/2000/01/rdf-schema#label
是两个对象中的唯一属性的名称,这两个对象是数据本身的两个属性的值aScript对象没有顺序,因此location
不能是“second”。我已经重新格式化了JS,以便更清楚地显示数组和对象的位置。请密切注意{}
和[]
之间的区别。