Javascript 使用jQuery进行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

我有一个类似这样的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/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,以便更清楚地显示数组和对象的位置。请密切注意
{}
[]
之间的区别。