如何获取属性网址?

时间:2019-04-29 04:05:51

标签: javascript json

我正在尝试从JSON获取属性。如何从下面的JSON正文获取属性url?

我在控制台中收到未定义的内容
这是我的

的云函数

//发货地图跟踪

exports.shipmentmaptracking = functions.https.onRequest((req, res) => {

  var request = require("request");
  var trackid = req.body.Tracking;


  let d = {
    "tracking_pages": [
      {
        "branded_tracking_theme_guid": "440bed90-617b-43ba-bd0e-31512ac66e23",
        "tracking_number": "9400111699000367101815",
        "carrier_code": "stamps_com",
        "service_code": "usps_priority_mail",

      }
    ]

  };


  var options = {
    method: 'POST',
    url: 'https://api.shipengine.com/v-beta/tracking_page',
    headers: {
      'Content-Type': 'application/json',
      'api-key': 'Wyo4gpVIXfElQSDgF9p/L9aQ9kX3Um60X8hRSo8VAes'
    },
    body: JSON.stringify(d),
  };

  console.log('Sending a ' + options.method + ' request to ' + options.url);

  request(options, function (error, response, body) {
    console.log('Successfully received a response from ShipEngine')

    if (error) {
      console.log('An error was returned: ' + error.message);
      res.status(500).send(error.message);
    }
    else if (response.statusCode >= 400) {
      console.log('An error was returned: ' + response.statusCode + ' ' + response.statusMessage);
      console.log(body);
      res.status(response.statusCode).send(body);
    }
    else {
      console.log('A successful response was returned');
      console.log(body);
      console.log(d.tracking_pages[0].url);
      //res.status(200).send({'URL':shippp.tracking_pages[0].url});
      console.log('statusCode:', response && response.statusCode);
    }
  });
});

这是我的Json输出 如何从下面的JSON获取属性URL

{
  "tracking_pages": [
    {
      "carrier_code": "stamps_com",
      "tracking_number": "9400111699000367101815",
      "branded_tracking_theme_guid": "440bed90-617b-43ba-bd0e-31512ac66e23",
      "token": "l1XKcsYaEECc903KqBvtaA",
      "url": "https://track.shipengine.com/se/v1/g/l1XKcsYaEECc903KqBvtaA",
      "service_code": "usps_priority_mail"
    }
  ],
  "page": 0,
  "pages": 0,
  "total": 0
}

预先感谢

3 个答案:

答案 0 :(得分:2)

只需从数据中获取它-请注意,我给整个对象起了一个名字(“数据”),并且tracking_pages是一个数组-因此,您必须使用索引号来获取它(假设会有不止一个-否则就不需要使用数组)-然后它只是其中的url属性。

data.tracking_pages[0].url;

显然,您需要在选择上更加复杂-我假设实际数据更加复杂。您可以使用JSON.parse()将json转换为常规对象。

但是它就像遍历对象中的父对象并正确选择选择器一样简单。

let data = {
      "tracking_pages": [
        {
          "carrier_code": "stamps_com",
          "tracking_number": "9400111699000367101815",
          "branded_tracking_theme_guid": "440bed90-617b-43ba-bd0e-31512ac66e23",
          "token": "FmUfsOmjdEuioBuen1lMVA",
          "url": "https://track.shipengine.com/se/v1/g/FmUfsOmjdEuioBuen1lMVA",
          "service_code": "usps_priority_mail"
        }
      ],
      "page": 0,
      "pages": 0,
      "total": 0
    }
    
    
 let trackingUrl = data.tracking_pages[0].url;
 
 
console.log(trackingUrl) // gives https://track.shipengine.com/se/v1/g/FmUfsOmjdEuioBuen1lMVA

答案 1 :(得分:1)

您可以使用。访问对象中url属性的符号

var a={
      "tracking_pages": [
        {
          "carrier_code": "stamps_com",
          "tracking_number": "9400111699000367101815",
          "branded_tracking_theme_guid": "440bed90-617b-43ba-bd0e-31512ac66e23",
          "token": "FmUfsOmjdEuioBuen1lMVA",
          "url": "https://track.shipengine.com/se/v1/g/FmUfsOmjdEuioBuen1lMVA",
          "service_code": "usps_priority_mail"
        }
      ],
      "page": 0,
      "pages": 0,
      "total": 0
    };
   
    console.log(a.tracking_pages[0].url)

答案 2 :(得分:1)

预期输出不清楚。如果tracking_pages包含多个url,则可以使用map返回网址数组

let da = {
  "tracking_pages": [{
    "carrier_code": "stamps_com",
    "tracking_number": "9400111699000367101815",
    "branded_tracking_theme_guid": "440bed90-617b-43ba-bd0e-31512ac66e23",
    "token": "FmUfsOmjdEuioBuen1lMVA",
    "url": "https://track.shipengine.com/se/v1/g/FmUfsOmjdEuioBuen1lMVA",
    "service_code": "usps_priority_mail"
  }],
  "page": 0,
  "pages": 0,
  "total": 0
}

let urlAr = da.tracking_pages.map(item => item.url);
console.log(urlAr)