如何在JSON中解析此网址中的内容?
我正在尝试使用下面找到的代码解析此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获得电影的演员。
我缩小了结果,但是我似乎无法找到从数据中获得主演价值的方法。
请帮助这个新手。
谢谢你/
答案 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)
您对网址内容不太满意,但您可以根据需要进行更改。
var url = "http://en.wikipedia.org/w/api.php?action=mobileview&format=json&page=RoboCop_(2014_film)&redirect=no§ions=all&prop=text§ionprop=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
。另一个“电影”页面可能具有不同的结构,取决于作者。