gpt4 book ai didi

javascript - JSON.parse() 如何能够解析为 JS 对象,而无需在 JSON 端点中实际定义对象属性?

转载 作者:行者123 更新时间:2023-11-30 19:47:27 25 4
gpt4 key购买 nike

我正在使用以下代码。

  • 我正在尝试获取 JSON 文件并获取一些数据。
  • 将其传递给 render() 函数并转换为 Javascript 对象。
Promise.all(STATUS_CODES.map((status) => {
const url = `https://${domainName}/api/v2/search/tickets?query="status:${status}"`;
return client.request.get(url, options);
})).then((responses) => { render(responses); }) // [1] Function invoked here
.catch((err) => {
showError('API request(s) failed.');
console.error('API request(s) failed.', err);
});
}

function render(responses) {
/** Convert JSON String into Javascript Object */
const data = responses.map(r => JSON.parse(r.response)); // [2] Confused with this line
const max = Math.max(...data.map(d => d.total));

我需要帮助的问题在这一行

const data = responses.map(r => JSON.parse(r.response));

这是我在 ${status} = 2 获取 JSON 的一些数据:https://codebeautify.org/online-json-editor/cb535226

问题

当[1]被调用时,将JSON字符串作为参数发送给[2],在JS Object中进行解析。但是,在语句 r.response 中,我希望 JSON 中必须有一个 response 属性。但是如果我手动搜索它,我无法找到它。

但是在下一行 d.total 中,我能够找到 total 属性。

完整的代码与预期的一样好,但我想了解如果 response 属性不在 JSON 字符串中,它是如何工作的?

最佳答案

这听起来像 client.request.get(url, options) 返回一个 Promise,它解析为一个具有 .response 的对象属性(property)。 responses 是那些对象的数组,而不是 JSON 字符串的数组。

换句话说,每个 JSON 响应都包含在另一个对象中,访问其中一个对象的 .response 属性可以让您访问实际的响应数据(这里是一个 JSON字符串)。

包装器对象(在您的代码中称为 r)可能包含其他数据,例如请求的 URL 或响应的状态代码。 .response 属性不是 JSON 的一部分 - 它是 client.request.get 接口(interface)的一部分。

关于javascript - JSON.parse() 如何能够解析为 JS 对象,而无需在 JSON 端点中实际定义对象属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54819025/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com