У меня довольно интересный вопрос, и я надеюсь, что кто-нибудь мне поможет. Я надеялся, что кто-нибудь сможет объяснить мне разницу между анализом объекта Variable 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
Однако, если я получу точно такую же JSON из fetch и поместите его в переменную следующим образом:
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 () является асин c, и поэтому он возвращает ответ в форме обещания. Я также прочитал ответные данные в виде потока. Может ли кто-нибудь подтвердить, что вывод моей выборки не определен, потому что я пытаюсь проанализировать данные потока? Если это так, то может ли кто-нибудь помочь с небольшим примером того, как я могу получить данные и проанализировать их, чтобы получить только те данные, которые я хочу просмотреть?