带有json的Node.JS和Object.Keys

时间:2016-11-08 16:44:51

标签: javascript json node.js

守则:

(URL是传递json数据的工作休息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

1 个答案:

答案 0 :(得分:2)

你不是解析你得到的JSON(文本)。在request回调的顶部添加此内容:

data = JSON.parse(data);

E.g:

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

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

          // ...

你已经解析了它,你将拥有一个可以遍历的对象树。