JSON对象但无法解析

时间:2015-03-03 16:32:38

标签: javascript json node.js

我需要查找一个itunes url,它会抛出json,在我的nodejs基于后端,我使用nodejs的请求模块来获取json,它确实也让我返回json,但是那一刻我尝试解析它并不会返回我的内部对象,但是像stringify或JSON.parse这样的调用只能正常工作。 示例网址https://itunes.apple.com/lookup?id=477091027

//sample url https://itunes.apple.com/lookup?id=477091027
 request(itunesUrl, function (error, response, body) {
                      if (!error && response.statusCode == 200) {         
                        var jsonbody = JSON.stringify(body.trim());                                                                        
                        var obj = JSON.parse(jsonbody);            
                        console.log(obj);                          
                        /*for(var myKey in obj) 
                        {
                           console.log("key:"+myKey+", value:"+obj[myKey]);
                       }*/

                        //none of these show value in them
                        appinfo.appname = obj.results[0].trackName;
                        appinfo.appImage = obj.results[0].artworkUrl60;
                        appinfo.appCategory = obj.results[0].genres[0];
                      }
                    });

我现在在我的智慧结束

3 个答案:

答案 0 :(得分:1)

您只需添加参数json:true

即可
request({url:itunesUrl, json:true}, function (error, response, body) {
                      if (!error && response.statusCode == 200) {
                       console.log(body.results[0].trackName)


                        }
                    });

答案 1 :(得分:0)

实际上,你stringify再次parse json之前:

var jsonbody = JSON.stringify(body.trim());                                                                        
var obj = JSON.parse(jsonbody);

如果body应该包含json,那么你应该直接

var obj = JSON.parse(body);

答案 2 :(得分:0)

即使Ninetainedo的回答看起来正确,但文档建议您可以在请求选项中使用json: true作为参数。这将自动将json解析为一个对象,从而无需JSON.parse()行。

请参阅https://github.com/request/request#requestoptions-callback