【问题标题】:Formatting a JSON Response to build a URL格式化 JSON 响应以构建 URL
【发布时间】:2020-08-24 17:30:16
【问题描述】:

难以置信地坚持尝试格式化接收 JSON 响应并对其进行格式化。操作顺序:

  1. 查询 REST API 端点 (https://endpoint.com/api/v1/employee?id={username})
  2. 接收 JSON 响应:{"employee":{"full name":"Example Name","function":"Role","office":"Office Location",team":"Team 1|Team 2|Team 3|"}}

在我的 django 应用程序的 base.js 文件中,我希望提取团队字符串并将它们传递到另一个 URL。我有什么办法可以做到这一点?当我从端点$.getJSON 收到 responseJSON、responseText 等时,我无法将它们拉出/以任何方式使用它们。

【问题讨论】:

  • 新网址中的团队值需要什么格式?还向我们展示您是如何使用$.getJSON 的,因为听起来您也没有正确使用它
  • 我在第 1 步中在上面的 URL 上使用了 .getJSON。格式需要是可以传递到新 URL 的字符串。
  • 是的,但如果您正确使用 responseText 或 responseJSON 属性,则无需对其进行任何操作。因此,让我们从正确使用它开始,以及如何使用团队价值观构建新网址
  • let url = https://endpoint.com/api/v1/employee?id={username} let response = $.getJSON(url) 和新的 url 看起来像:otherurl.com/endpoint/…
  • 好吧……这不是它的工作原理,试试$.getJSON(url).then(data => console.log(data))。 Ajax 方法是异步的

标签: javascript json django


【解决方案1】:

为了获取和解析 json,我建议您使用以下 fetch 结构:

fetch('https://endpoint.com/api/v1/employee?id=username')
  .then(response => response.json())
  .then(data => {
    let teams = data.team.split('|');
    // Do something with team names
  });

让我们分解一下每行的作用:

  1. 首先我们使用fetch从定义的url请求数据
  2. 然后我们将响应转换为 json 对象
  3. 最后,我们使用data.teams 语句检索包含团队值的字符串,之后我们立即使用split 和定义的分隔符| 将团队名称列表转换为数组。

在此之后,您应该能够对团队名称做任何您想做的事情。您也可以使用它们进行另一个 API 调用。如果您有兴趣,请务必查看fetch documentation 以及split documentation 如果您还不熟悉该功能。

上述解决方案假定响应为 200,对于错误处理,您应该查看上面的 fetch 文档。

【讨论】:

    猜你喜欢
    • 2014-01-21
    • 1970-01-01
    • 1970-01-01
    • 2019-05-12
    • 2011-08-24
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    相关资源
    最近更新 更多