【问题标题】:How to parse correct JSON data [duplicate]如何解析正确的 JSON 数据 [重复]
【发布时间】:2021-01-17 04:12:19
【问题描述】:

我有这个端点 - https://gbfs.urbansharing.com/oslobysykkel.no/station_information.json

这是回复

{
  "last_updated": 1553592653,
  "data": {
    "stations": [
      {  
        "station_id":"627",
        "name":"Skøyen Stasjon",
        "address":"Skøyen Stasjon",
        "lat":59.9226729,
        "lon":10.6788129,
        "capacity":20
      },
      {  
        "station_id":"623",
        "name":"7 Juni Plassen",
        "address":"7 Juni Plassen",
        "lat":59.9150596,
        "lon":10.7312715,
        "capacity":15
      },
      {  
        "station_id":"610",
        "name":"Sotahjørnet",
        "address":"Sotahjørnet",
        "lat":59.9099822,
        "lon":10.7914482,
        "capacity":20
      }
    ]
  }
}

如何解析数据以仅接收每个对象的此参数?

    "address":"Skøyen Stasjon",
    "lat":59.9226729,
    "lon":10.6788129

我试图做这样的事情

const GbfsClient = require('gbfs-client');
const gbfsClient = new GbfsClient('https://gbfs.urbansharing.com/oslobysykkel.no/');

gbfsClient.stationInfo()
    .then(osloStatus => console.log(osloStatus));

但我也收到了控制台中的所有内容。我不明白如何调用以.json 结尾的端点

谁能给我一个提示,告诉我如何做到这一点。

【问题讨论】:

  • 对于stations 数组中的每个对象,您需要addresslatlon?还是只是第一个?
  • 对于每个对象,抱歉忘了提及。现在解决问题
  • 我不确定我(和你)是否理解你想要做什么。您是否正在尝试创建一个自定义 JSON 解析器来跳过与您无关的数据?
  • (而不是使用常规的 JSON 解析器然后删除额外的数据?)
  • *.json 结尾表明这只是一个文件,而不是 API。所以你必须解析它,然后访问和映射你想要的东西。有关详细信息,请参阅重复的问题。

标签: javascript json


【解决方案1】:

// Fetch data
fetch("https://gbfs.urbansharing.com/oslobysykkel.no/station_information.json", {
    method: 'GET',
    redirect: 'follow'
})
.then(response => response.json())
.then(result => {

    // For each 'station'
    result.data.stations.forEach((station) => {
    
      // Process data
      console.log(station.address, station.lat, station.lon);
    });
})
.catch(error => console.log('error', error));

【讨论】:

  • 这是对您的 Q 的一个很好的回答。您只能使用 Destructuring assignment 的特定参数(更简洁的代码 - 但想法是相同的)。无论如何,你会得到她与你的特定 API 调用相关的过度获取(例如容量或地址)
  • @Hexycode api返回所有字段,因此响应知道其他参数。正如Ezra Siton 提到的那样,您可以使用destructing 来“删除”这些值。但是,您可以使用“不使用”那些。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-13
  • 1970-01-01
  • 2021-12-19
  • 2018-10-09
  • 1970-01-01
  • 2012-10-02
  • 2011-12-31
相关资源
最近更新 更多