首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用TMDb API意外结束JSON输入

使用TMDb API意外结束JSON输入
EN

Stack Overflow用户
提问于 2019-03-27 22:32:54
回答 2查看 191关注 0票数 0

我正在尝试解析从Movie返回的JSON数据。我收到一个错误,告诉我我得到了以下错误:

代码语言:javascript
复制
Uncaught SyntaxError: Unexpected end of JSON input
    at JSON.parse (<anonymous>)
    at XMLHttpRequest.movieReq.onreadystatechange (discover.js:34)
    at loadIMDBDetails (discover.js:38)
    at MainFunc (discover.js:68)
    at discover.js:5
I am accessing individual movie information using the following XMLHttpRequest:

movieReq.open('GET','key=',false);

我还有其他XMLHttpRequests,它们返回JSON数据很好。这些请求使用的是API的发现函数。

这就是产生问题的功能。

代码语言:javascript
复制
function loadIMDBDetails(mO, i) {
    movieReq = new XMLHttpRequest();

    movieReq.onreadystatechange = function () {
        var parsedObj = JSON.parse(movieReq.responseText);
        mO.imdbId = parsedObj['imdb_id'];
    };
    movieReq.open('GET', 'https://api.themoviedb.org/3/movie/299537?api_key=34f8307d9addabf7924eab7f22cabb23', false);
    movieReq.send();
}

When using console.log to return the responseText, this is the result:

{“成人”:假,"backdrop_path":"/w2PMyoyLU22YvrGK3smVM9fW1jj.jpg",“belongs_to_collection”:空,“预算”:152000000,“体裁”:{“id”:28,“名称”:“行动”},{"id":12,“名称”:“冒险”},{"id":878,"name":"Science Fiction"},“主页”:“https://www.marvel.com/movies/captain-marvel”,"id":299537,"imdb_id":"tt4154664","original_language":"en",“original_title”:“漫威船长”,“概述”:“当地球陷入两个外星种族之间的银河战争中时,她成为了宇宙中最强大的英雄之一。”以20世纪90年代为背景的漫威船长是漫威电影宇宙历史上一个前所未有的时期的全新冒险。“流行”:419.096,"poster_path":"/AtsgWhDnHTq68L0lLsUrCnM7TjG.jpg","production_companies":{"id":420,"logo_path":"/hUzeosd33nzE5MCNsZxCGEKTXaQ.png",“name”:“惊奇工作室”,"origin_country":"US"},"production_countries":{"iso_3166_1":"US",“名称”:“美利坚合众国”}、"release_date":"2019-03-06“、”收入“:910298835、”运行时“:124年、"spoken_languages":{"iso_639_1":"en”、"name":"English"}、"status":"Released“、"tagline":"Higher”。再远一点。更快。“,”标题“:”惊奇船长“,”视频“:假,"vote_average":7.3,"vote_count":2885}

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-28 23:34:49

原来,我忘了添加一张关于onreadystatechange的支票。我添加了下面的检查,并在if语句中运行json解析,这解决了我的问题!

代码语言:javascript
复制
movieReq.onreadystatechange = function () {
    if (this.readyState == 4 && this.status == 200) {
        var parsedObj = JSON.parse(movieReq.responseText);
        mO.imdbId = parsedObj['imdb_id'];
    }
};
票数 1
EN

Stack Overflow用户

发布于 2019-03-27 23:26:51

如果我正确地理解了您的问题,当您将console.log(movieReq.responseText)返回到一行以上时:

var parsedObj = JSON.parse(movieReq.responseText);

你得到了正确的JSON,对吗?

如果是这样的话,这意味着您不需要使用函数JSON.parse(),您可以直接访问对象movieReq.responseText的任何元素,在您的示例中,您可以访问movieReq.responseText.imdb_id而不需要解析它(因为它已经是JSON对象了)。

如果要将字符串转换为JSON对象,只需使用JSON.parse(),有关更多信息,请查看:parse.asp

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55387493

复制
相关文章

相似问题

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