首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用jQuery解析JSON

用jQuery解析JSON
EN

Stack Overflow用户
提问于 2010-10-25 17:14:26
回答 5查看 590关注 0票数 0

嘿。我正在尝试使用jQuery将一些JSON解析成HTML。我已经检查过我的API请求是否有效,确实有效。

我想它在附加HTML时卡住了。

代码语言:javascript
复制
$('button').click(function(){
    $.getJSON('http://api.songkick.com/api/3.0/events.json?apikey=MY_API_KEY&location=ip:94.228.36.39', function(data) {
        $('.json').html('<p>' + data.location + '</p>' + '<p>' + data.uri + '</p>');
    });
});

getJson以以下格式返回大量数据,但我似乎无法将其解析为超文本标记语言。

代码语言:javascript
复制
{
    "resultsPage": {
        "totalEntries": 99,
        "page": 1,
        "results": {
            "event": [
                {
                    "type":"Concert",
                    "location": {
                        "city":"Huddersfield, UK"
                        ,"lng":-1.78333,
                        "lat":53.65},
                    "popularity":0.0,
                    "status":"ok",
                    "uri":"http:\/\/www.songkick.com\/concerts\/4993456-barbirolli-quartet-at-st-pauls-hall?utm_source=2251&utm_medium=partner",
                    "venue":{
                        "uri":"http:\/\/www.songkick.com\/venues\/156338-st-pauls-hall?utm_source=2251&utm_medium=partner",
                        "lng":-1.78333,
                        "displayName":"St. Paul's Hall",
                        "id":156338,
                        "metroArea": etc......
EN

回答 5

Stack Overflow用户

发布于 2010-10-25 17:23:46

问题是响应没有locationuri属性。

代码语言:javascript
复制
$('button').click(function(){
    $.getJSON('http://api.songkick.com/api/3.0/events.json?...', function(data) {
        // only guessing based on the information provided
        var events = data.resultsPage.results.event;
        for (var i = 0, l = events.length; i < l; i++) {
            $('.json').append('<p>' + events[i].location.city + '</p>'
                + '<p>' + events[i].uri + '</p>');
            });
        }
});
票数 1
EN

Stack Overflow用户

发布于 2010-10-25 17:25:21

正如我所看到的,问题在于JSON的结构与您试图评估的结构不同。它嵌套得更深。所以你需要的不是data.location,而是像data.resultsPage.results.event[0].location这样的东西。

这意味着,您很可能只是在代码中遗漏了data.resultsPage.results.event上的循环。

票数 1
EN

Stack Overflow用户

发布于 2010-10-25 17:25:34

您举的例子中的JSON对象有好几层。为了到达那个位置,你必须在里面筑巢-

代码语言:javascript
复制
var events = data['resultsPage']['results']['event'];
//Actually an array of events
var location = events[0]['location'];
...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4013193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档