【发布时间】:2021-10-15 21:15:06
【问题描述】:
我有一个非常新的问题,希望有人可以帮助我。我希望有人可以向我解释解析变量 JSON 对象与解析 fetch() 响应数据 JSON 对象之间的区别,后者将其放入变量中。例如:
如果我有这样的变量:
var myJSON =
{
"items" : [ {
"id" : "T0lDX0J1aWxkX0FydGlmYWN0czpmODk4YjM5MDNjYjk5YzU5NjgzNTk3ZWRjNWFmZjliYw",
"repository" : "Build_Artifacts",
"format" : "raw",
"group" : "/",
"name" : "05baf31c20d15edb2c477fa4e7bd2427504d3dba_DATE_2020-04-10_TIME_11_09_36.zip",
"version" : null,
"assets" : [ {
"downloadUrl" : "http://localhost:8081/repository/Build_Artifacts/05baf31c20d15edb2c477fa4e7bd2427504d3dba_DATE_2020-04-10_TIME_11_09_36.zip",
"path" : "05baf31c20d15edb2c477fa4e7bd2427504d3dba_DATE_2020-04-10_TIME_11_09_36.zip",
"id" : "T0lDX0J1aWxkX0FydGlmYWN0czphNDc1N2JjYWE2MmI2MzA2MDdlMTA1NGE4NTk1MDQ1OQ",
"repository" : "Build_Artifacts",
"format" : "raw",
"checksum" : {
"sha1" : "040e517528c05ca335a38e98c7ab8673773314bd",
"sha512" : "652e624873da778dce4bc417cacfead12bdd2ad01e9f7f77cba80270caa0f99caa09d4fb53f584a4da9991186f78bd7b55da1e4ed3f22e026b8333dd332b3b83",
"sha256" : "b66805d15702505f708b90f6e1169c79390d59b9f8cadc9ab1852f48eeabbfe2",
"md5" : "60fdd406e026330c2cfbec3e15e05414"
}
} ]
}]
}
然后我可以通过以下方式解析它:
console.log(myJSON.items[0].name)
// Output is as follows:
// 05baf31c20d15edb2c477fa4e7bd2427504d3dba_DATE_2020-04-10_TIME_11_09_36.zip
但是,如果我从 fetch 中获得完全相同的 JSON 并将其放入如下变量中:
const fetch = require("node-fetch");
const asset = 'Build_Artifacts'
const url2 = 'http://localhost:8081/service/rest/v1/components?repository='
const myHeaders = {
"Authorization": "Basic token",
"Content-Type": "application/json",
};
const requestOptions = {
method: 'GET',
headers: myHeaders,
redirect: 'follow'
}
const getData = async () => {
const res = await fetch(url2 + asset, requestOptions);
const myJSON = await res.json()
//console.log(myJSON)
return myJSON
}
getData().then(res = (myJSON) => {
console.log(myJSON.items[0].name)
})
// Output is as follows:
// UnhandledPromiseRejectionWarning: TypeError: Cannot read property '0' of undefined
我意识到 fetch() 是异步的,因此它以承诺的形式返回响应。我也读过响应数据是流的形式。有人可以确认我的提取输出是否因为我正在尝试解析流数据而未定义吗?如果是这种情况,那么有人可以提供一个小例子来说明我如何获取数据并解析它以仅检索我想要查看的数据吗?
【问题讨论】:
-
console.log(myJSON)在getData()和getData().then()中返回什么? -
res =在.then(res = (myJSON) => { ... })中做什么?错误表明myJSON.items是undefined,所以它可能不是您所期望的。 -
我只是用它来表示我将在从 getData 中提取整个 JSON 有效负载后对数据做一些事情,例如解析 myJSON .....即使我删除了整个 ".然后”并尝试从 getData() 解析它我仍然想出了相同的“未定义”响应....
标签: javascript node.js api fetch response