Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript parse fetch()JSON响应输出Nodejs vs.parse JSON变量_Javascript_Node.js_Api_Fetch_Response - Fatal编程技术网

Javascript parse fetch()JSON响应输出Nodejs vs.parse JSON变量

Javascript parse fetch()JSON响应输出Nodejs vs.parse JSON变量,javascript,node.js,api,fetch,response,Javascript,Node.js,Api,Fetch,Response,我有一个很新的问题,我希望有人能帮我。我希望有人能给我解释一下解析变量JSON对象和解析fetch()响应数据JSON对象(放在变量中)之间的区别。例如: 如果我有一个变量,比如: var myJSON = { "items" : [ { "id" : "T0lDX0J1aWxkX0FydGlmYWN0czpmODk4YjM5MDNjYjk5YzU5NjgzNTk3ZWRjNWFmZjliYw", "repository" : "Build_Artifacts",

我有一个很新的问题,我希望有人能帮我。我希望有人能给我解释一下解析变量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()是异步的,因此它以承诺的形式返回响应。我还读取了以流形式存在的响应数据。有人能确认我的获取输出是否未定义,因为我正在尝试解析流数据吗?如果是这样的话,那么有人能帮我举一个小例子,说明如何获取数据并对其进行解析,从而仅检索我想要查看的数据吗

您可以将myJson变量修改为如下格式:

var myJson = [{items: {...}}]

看起来以下各项似乎正在发挥作用:

const getData=async()=>{
const res=等待获取(url2+资产,请求选项);
const myJSON=wait res.text()
返回myJSON
}
getData().then(函数(结果){
常量resultar=[];
const outObjA=JSON.parse(结果);
for(设i=0;i{
console.log('错误:',错误)

})
console.log(myJSON)
getData()
getData().then()
中返回什么?res=
中做什么?然后(res=(myJSON)=>{…}
?错误表明
myJSON.items
未定义的
,因此它可能不是您所期望的。我只是用它来表示,在我从getData(如parse myJSON)中提取整个JSON负载后,我将对数据做些什么……即使我删除了整个“.then”并尝试从getData()中解析它我仍然得到了相同的“未定义”响应…如果这看起来像一个愚蠢的问题,那么很抱歉,但是响应的格式似乎很好,即有效的JSON…它正在解析我很难处理的响应。你是说如果我像上面那样格式化我的“myJSON”变量,它会在响应到来时解析它吗?