簡體   English   中英

JSON對象,但無法解析

[英]JSON object but can't parse

我需要在一個基於json的iTunes網址上查找引發json的內容,我正在使用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];
                      }
                    });

我現在機智了

您只需要添加參數json:true

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


                        }
                    });

實際上,您是在parse json之前對其進行stringify再次對其進行parse

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

如果body應該包含json,那么您應該直接執行

var obj = JSON.parse(body);

即使Ninetainedo的答案看起來正確,文檔仍建議您可以在請求選項中使用json: true作為參數。 這將自動將json解析為一個對象,而無需使用JSON.parse()行。

參見https://github.com/request/request#requestoptions-callback

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM