javascript - TypeError : data. map 不是函数

标签 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,它返回与上面的 var 数据相同的值。但这不起作用。

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

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

它确实给出了一个错误:(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:无法读取未定义的属性“map”

谢谢,请原谅我的英语。

最佳答案

您不需要手动执行 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);         
});

关于javascript - TypeError : data. map 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52248290/

相关文章:

javascript - 在 angular.js 中附加内容

java - 将 JSON 值放入 Hashmap

javascript - 使用 jQuery 更改背景图片

json - Symfony 将 JMS 序列化程序与 JsonResponse 结合使用

json - 将json数组编码到客户端

javascript - 可变变量可以从闭包中访问

node.js - 获取代表现在(当前时间)的时间戳用于查询mongodb oplog

node.js - JSONStream 期间的无限循环

javascript - Safari getDisplayMedia 必须从用户手势处理程序中调用

javascript - 提供程序 'Task' 必须从 $get 工厂方法返回一个值