TypeError:data.map不是函数

时间:2018-09-09 20:06:59

标签: javascript json node.js node-fetch

我真的很想弄清楚我想念的是什么,我不是那个关于javascript的专家,如果有人可以告诉我我做错了什么,我真的很感激。

我有一个有效的代码:

if (value_ == "group") {
  fetch("http://localhost/someapi"+value_).then(r => { return r.json()})
  .then(json => {
      var data =  `{ "group" : [{"name":"foo","tag":"bar"},{"name":"bool","tag":"lean"}] }`;
      var data = JSON.parse(data); 
      var groupName = data.group.map(current => current.name);
      var groupTag = data.group.map(current => current.tag);
      console.log(data);         
      console.log(`json: ${data.group[0].name}`);
    });
}

上面的代码可以正常工作并获取我想要的每个数据,但是json来自:

var data =  `{ "group" : [{"name":"foo","tag":"bar"},{"name":"bool","tag":"lean"}] }`;

然后我尝试从URL中获取json,该json返回与上述var数据相同的值。但这行不通。

我确实将var data = JSON.parse(data);更改为data = JSON.parse(json)

并删除“ var data = { "group" : [{"name":"foo","tag":"bar"},{"name":"bool","tag":"lean"}] };”

它确实给出了错误:(node:10868) UnhandledPromiseRejectionWarning: SyntaxError: Unexpected end of JSON input

我也尝试了以下代码:

  fetch("http://localhost/someapi"+value_).then(r => { return r.json()})
  .then(json => {
      parseJSON(JSON.stringify(json));
      function parseJSON(str){
        var data = JSON.parse(str); 
        var groupName = data.group.map(current => current.name);
        var groupTag = data.group.map(current => current.tag);
        console.log(data);         
        console.log(`json: ${data.group[0].name}`);
      }

    });
}

这给我一个错误:(node:12668) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'map' of undefined

谢谢,请原谅我的英语。

1 个答案:

答案 0 :(得分:2)

您无需手动执行JSON.parse,因为示例第三行中json变量的内容已经是一个对象。

尝试一下:

fetch("http://localhost/someapi"+value_)
.then(r => r.json())
.then(json => {
  var groupName = json.group.map(current => current.name);
  var groupTag = json.group.map(current => current.tag);
  console.log('groupName', groupName);         
  console.log('groupTag', groupTag);         
});