【问题标题】:How to get the attribute url? [duplicate]如何获取属性url? [复制]
【发布时间】:2019-04-29 12:33:34
【问题描述】:

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

我在控制台中收到 undefined
这是来自

的我的云功能

//出货地图追踪

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
}

提前致谢

【问题讨论】:

标签: javascript json


【解决方案1】:

只需从数据中获取它 - 请注意,我已经给整个对象一个名称(“数据”)并且 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

【讨论】:

  • 嗨,先生,在这样实施后,我在控制台中收到未定义的错误。我已将我的代码附在上面请检查
  • 这可能是一个范围问题 - 我正在使用 let .... 这可能会限制 acope .....尝试将它换成较旧的 var ..... 然后有更广泛的范围。
  • 我也用过 var 先生
【解决方案2】:

您可以使用 .访问对象中的 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)

【讨论】:

    【解决方案3】:

    预期的输出不清楚。如果tracking_pages包含多个url,那么你可以使用map返回一个url数组

    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)

    【讨论】:

      猜你喜欢
      • 2013-01-08
      • 1970-01-01
      • 2020-10-05
      • 1970-01-01
      • 2017-04-12
      • 2018-06-08
      • 2012-05-06
      • 2014-06-22
      • 2013-06-07
      相关资源
      最近更新 更多