使用Javascript解析Json以检索特定值

时间:2013-11-27 00:10:27

标签: javascript jquery json parsing wikipedia-api

如何在JSON中解析此网址中的内容?

http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&format=json&titles=RoboCop_(2014_film)&rvsection=0

我正在尝试使用下面找到的代码解析此json url,但它不起作用。

$.getJSON(url, function (json) {
    alert(json.result);
    $.each(json.list, function (i, fb) {
        alert(fb.result);
    });
});

以下是我对JS Fiddle http://jsfiddle.net/94Vyf/

的看法

如果我没弄错的话,这应该会弹出一个包含某种信息的窗口。

基本上我正试图通过维基百科的api获得电影的演员。

我缩小了结果,但是我似乎无法找到从数据中获得主演价值的方法。

请帮助这个新手。

谢谢你/

2 个答案:

答案 0 :(得分:2)

由于这是一个跨域请求,您需要使用jsonp - 网址末尾的callback=?

$.getJSON('http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&format=json&titles=RoboCop_(2014_film)&rvsection=0&callback=?', function (json) {
    console.log(json);
    $.each(json.list, function (i, fb) {
        alert(fb.result);
    });
});

演示:Fiddle - 查看浏览器控制台以查看日志记录语句,不要将警报用于调试目的

同样在小提琴中你没有包含jQuery

答案 1 :(得分:0)

DEMO

您对网址内容不太满意,但您可以根据需要进行更改。

var url = "http://en.wikipedia.org/w/api.php?action=mobileview&format=json&page=RoboCop_(2014_film)&redirect=no&sections=all&prop=text&sectionprop=level&noimages=&noheadings=&callback=?";


jQuery.getJSON(
    url,
    function (data){ 
      var t = data.mobileview.sections[2].text, out = [];
      t = t.replace(/<a[^>]+>([^<]+)<\/a>/igm,"$1");

      var m = t.match(/(?:<li>)([a-zA-Z ]+) as ([a-zA-Z ]+)(?:,)/img);
      m.forEach(function (s){
        out.push(s.replace(/(?:<li>)([a-zA-Z ]+) as ([a-zA-Z ]+)(?:,)/i, "$1 = $2"));
      });
      console.log(out);// this is result, but you have to modify it as your taste
    }
);

输出:

["Joel Kinnaman = Alex Murphy", "Michael Keaton = Raymond Sellars", "Abbie Cornish = Clara Murphy", "Jackie Earle Haley = Maddox", "Michael Kenneth Williams = Officer Jack Lewis", "Jennifer Ehle = Liz Kline", "Jay Baruchel = Tom Pope", "Aimee Garcia = Kim", "John Paul Ruttan = David Murphy", "Douglas Urbanski = Mayor Durant"]

<强> INPORTANT!

此代码不适用于其他维基百科页面,因为它取决于JSON数据,在这种情况下,“Cast”部分有一个索引2。另一个“电影”页面可能具有不同的结构,取决于作者。