如何在包含url作为名称的javascript中解析Json数据

时间:2015-05-22 01:59:04

标签: javascript html json parsing dbpedia

我无法解析从此http://dbpedia.org/data/Los_Angeles.json网址获取的json文件。

我需要从上面的URL中找到的json数据中找到populationTotal,areaTotal,populationDensity字段。

这是从http://dbpedia.org/data/Los_Angeles.json网址获取的json数据的片段。 例如。

"http://dbpedia.org/ontology/populationTotal" : [ 
{ "type" : "literal",
  "value" : 3792621 , 
  "datatype" : "http://www.w3.org/2001/XMLSchema#integer" } ] ,
"http://dbpedia.org/ontology/PopulatedPlace/areaTotal" : [ 
{ "type" : "literal", 
  "value" : "1301.9688931491348" , 
  "datatype" : "http://dbpedia.org/datatype/squareKilometre" } ,

我怎么能得到这个Json数据并使用Javascript输出它。

2 个答案:

答案 0 :(得分:0)

这有帮助吗?

var populationTotalData=[];
for(var key in data) {
    if(key.match(/populationTotal/))
    // or simplier: if(key.indexOf("populationTotal")>-1)
        populationTotalData.push(data[key]);
}

答案 1 :(得分:0)

由于Same-Origin Policy,您通常无法使用JavaScript直接获取数据。但是,事实证明dbpedia.org支持JSON-P,所以你可以用这样的直接JavaScript获取数据:

// This is the "callback" function. The 'data' variable will contain the JSON.
// You can access it like I have done in the alert below.
mycallback = function(data){
    alert(data["http://fr.dbpedia.org/resource/Los_Angeles"]["http://www.w3.org/2002/07/owl#sameAs"][0].value);
};

// This is the function we use to fetch the JSON data:
function requestServerCall(url) {
    var head = document.head;
    var script = document.createElement("script");

    script.setAttribute("src", url);
    head.appendChild(script);
    head.removeChild(script);
}

// Note the query string that I have added (?callback=mycallback).
// This is the name of the function that will be called with the JSON data.
requestServerCall('http://dbpedia.org/data/Los_Angeles.json?callback=mycallback');

可以找到更多关于JSONP的非常好的信息here。您可以使用这样的代码在mycallback函数内部循环。显然,你必须使嵌套循环得到你想要的,所以这段代码需要修改以满足你的确切需求。

<script type="text/javascript">
  for(var index in data) { 
    console.log(data[index]); 
  }
</script>

另一种方法是通过PHP。例如:您可以将整个页面分成如下的JavaScript变量:

<?php
  $los_angeles = file_get_contents('http://dbpedia.org/data/Los_Angeles.json');
?>
<script type="text/javascript">
  var data = <?php echo $los_angeles; ?>;
  alert(data["http://fr.dbpedia.org/resource/Los_Angeles"]["http://www.w3.org/2002/07/owl#sameAs"][0].value)
</script>