2016-11-08 82 views
0

驗證碼:的Node.js和Object.Keys使用JSON

(URL是傳遞JSON數據工作REST API)

var request = require('request'); 


var username = "user"; 
var password = "pass"; 
var auth = "Basic " + new Buffer(username + ":" + password).toString("base64"); 



var url = "URL"; 

request(
    { 
     method: "GET", 
     url : url 
    }, 
    function (error, response, data) { 

      console.log(data); 

      var initial_index = Object.keys(data.sites)[0]; 
      var product_index = Object.keys(data.sites[initial_index].products)[0]; 

      var order_id = data.purchase_id; 
      var title = data.sites[initial_index].products[product_index].title; 
      var content = data.sites[initial_index].products[product_index].description; 
      var image = data.sites[initial_index].products[product_index].image; 
      var total_price = data.sites[initial_index].prices.final_price; 
      var quantity = data.sites[initial_index].products[product_index].input_fields.quantity; 
      var sold_by = data.sites[initial_index].info.name; 
      var order_status = data.sites[initial_index].status; 




      var datatwo = { 
      "status": "published", 
      "order_id": order_id, 
      "title": title, 
      "content": content, 
      "image": image, 
      "final_price": total_price, 
      "quantity": quantity, 
      "sold_by": sold_by, 
      "order_status": order_status 
      };  


    } 
); 

運行的代碼時,我收到此錯誤。如何解決?

var initial_index = Object.keys(data.sites)[0]; 
           ^

TypeError: Cannot convert undefined or null to object 
+0

它看起來像'數據'?你可以評論函數體,只留下'console.log(data);'。 –

回答

2

你不解析的JSON(這是文本),你回來。在你request回調的頂部補充一點:

data = JSON.parse(data); 

例如爲:

request(
    { 
     method: "GET", 
     url : url 
    }, 
    function (error, response, data) { 
      data = JSON.parse(data); 

      var initial_index = Object.keys(data.sites)[0]; 

      // ... 

一個你解析它,你就會有一個對象樹可以穿越。

+0

謝謝T.J.在這裏學習。 – therealdeal