JSon解析不起作用

时间:2014-01-21 18:57:28

标签: javascript json parsing

我正在尝试解析来自flixter API的JSON数据,以将其导入我的博客。 在下面的示例中,我尝试使用JavaScript输出电影耗材的强制转换信息。

我的全部目标是让它输出信息 “西尔维斯特·史泰龙饰演巴尼·罗斯,杰森·斯坦森担任李圣诞节”等等。

这是我的jsFiddle http://jsfiddle.net/k3V9p/3/

     var jsontext = '{
    "cast": [{
        "id": "162664630",
        "name": "Sylvester Stallone",
        "characters": ["Barney Ross"]
    }, {
        "id": "162653720",
        "name": "Jason Statham",
        "characters": ["Lee Christmas"]
    }, {
        "id": "162652223",
        "name": "Jet Li",
        "characters": ["Yin Yang"]
    }, {
        "id": "162664307",
        "name": "Dolph Lundgren",
        "characters": ["Gunnar Jensen"]
    }, {
        "id": "162670654",
        "name": "Chuck Norris",
        "characters": ["Booker"]
    }, {
        "id": "326392465",
        "name": "Terry Crews",
        "characters": ["Hale Caesar"]
    }, {
        "id": "770731413",
        "name": "Randy Couture",
        "characters": ["Toll Road"]
    }, {
        "id": "770833479",
        "name": "Liam Hemsworth",
        "characters": ["Billy the Kid"]
    }, {
        "id": "770704326",
        "name": "Scott Adkins",
        "characters": ["Hector"]
    }, {
        "id": "770670020",
        "name": "Nan Yu",
        "characters": ["Maggie"]
    }, {
        "id": "162670708",
        "name": "Jean-Claude Van Damme",
        "characters": ["Jean Vilain"]
    }, {
        "id": "162652509",
        "name": "Bruce Willis",
        "characters": ["Mr. Church"]
    }, {
        "id": "162662233",
        "name": "Arnold Schwarzenegger",
        "characters": ["Trench"]
    }, {
        "id": "489251774",
        "name": "Amanda Ooms",
        "characters": ["Pilar"]
    }, {
        "id": "377608335",
        "name": "Charisma Carpenter",
        "characters": ["Lacy"]
    }, {
        "id": "771417014",
        "name": "Nikolette Noel",
        "characters": ["Sophia"]
    }],
    "links": {
        "rel": "http://api.rottentomatoes.com/api/public/v1.0/movies/771238417.json"
    }
}';
    var titles = JSON.parse(jsontext);
    document.write(titles.cast);

3 个答案:

答案 0 :(得分:3)

您遇到的问题是字符串文字中的行尾。你可以这样写:

var jsontext = '{\
  "cast": [{\

但在你的情况下,目前尚不清楚你是否真的需要JSON,因为你可以直接创建你的对象

var titles = {
   cast": [{
   ...

答案 1 :(得分:1)

我想说你遇到的第一个问题是JSON.parsing(破坏已完全回答),在解决之后你将不得不处理你可以这样做的渲染:(demo)< / p>

var titles = {
    "cast": [{
        "id": "162664630", "name": "Sylvester Stallone", "characters": ["Barney Ross"]
    }, {"id": "162653720", "name": "Jason Statham", "characters": ["Lee Christmas"]
    }, {"id": "162652223", "name": "Jet Li", "characters": ["Yin Yang"]
    }, {"id": "162664307", "name": "Dolph Lundgren", "characters": ["Gunnar Jensen"]
    }, {"id": "162670654", "name": "Chuck Norris", "characters": ["Booker"]
    }, {"id": "326392465", "name": "Terry Crews", "characters": ["Hale Caesar"]
    }, {"id": "770731413", "name": "Randy Couture", "characters": ["Toll Road"]
    }, {"id": "770833479", "name": "Liam Hemsworth", "characters": ["Billy the Kid"]
    }, {"id": "770704326", "name": "Scott Adkins", "characters": ["Hector"]
    }, {"id": "770670020", "name": "Nan Yu", "characters": ["Maggie"]
    }, {"id": "162670708", "name": "Jean-Claude Van Damme", "characters": ["Jean Vilain"]
    }, {"id": "162652509", "name": "Bruce Willis", "characters": ["Mr. Church"]
    }, {"id": "162662233", "name": "Arnold Schwarzenegger", "characters": ["Trench"]
    }, {"id": "489251774", "name": "Amanda Ooms", "characters": ["Pilar"]
    }, {"id": "377608335", "name": "Charisma Carpenter", "characters": ["Lacy"]
    }, {"id": "771417014", "name": "Nikolette Noel", "characters": ["Sophia"]
    }],
        "links": {
        "rel": "http://api.rottentomatoes.com/api/public/v1.0/movies/771238417.json"
    }
},
star,
staring = [];

for (star = 0; star < titles.cast.length; star++) {
    staring.push(titles.cast[star].name + ' as ' + titles.cast[star].characters[0]);
}

document.getElementById('Credits').innerHTML = staring.join(', ');

答案 2 :(得分:1)

您无需更改flixster api返回给您的内容。

问题是你需要直接调用API ...不要复制和粘贴结果。

请参阅此处的使用情况http://developer.rottentomatoes.com/docs/read/json/v10/examples

只需执行Ajax调用和onSuccess(示例中的searchCallback),您将在json中解析数据。