Javascript TypeError:data.map不是函数
我真的很想知道我错过了什么,我不是javascript方面的专家,如果有人能告诉我我做错了什么,我真的很感激 我有一个工作代码:Javascript TypeError:data.map不是函数,javascript,json,node.js,node-fetch,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"},{"na
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,该URL返回与上面的var数据相同的值。但它不起作用
我确实改变了vardata=JSON.parse(data)
intodata=JSON.parse(JSON)
并删除“var data={“group”:[{“name”:“foo”,“tag”:“bar”},{“name”:“bool”,“tag”:“lean”}]}
它确实给出了一个错误:(节点:10868)未处理PromisejectionWarning:SyntaxError:JSON输入意外结束
我还尝试了以下代码:
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}`);
}
});
}
这给了我一个错误:(节点:12668)未处理的PromisejectionWarning: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);
});
您为什么要执行
JSON.stringify
,然后立即对结果执行JSON.parse
?为什么不直接说var data=json代码>?我不确定,但我确实用它来让我的其他代码工作,但它是不同的代码环境。在我的其他代码中,如果我直接使用var data=json
它会给我类型错误:无法读取未定义的属性“0”
我不是我所说的那样的专家,所以我只是想弄清楚这里发生了什么,并学会修复它。当你传递数据
变量时,你的解析方法工作得很好。我认为问题在于json
变量的内容。您记录了它的内容了吗?如果这是您所要求的,那么我的api url上的json内容与var=data
中的内容完全相同。要了解获取结果的情况,您可能需要查看为响应获取而发送的实际文本。在开发者工具网络窗格中,或者临时将r.json()
更改为r.text()
,然后将console.log
更改为var data=json代码>现在就可以工作了。。因此,基本上,如果解析直接来自获取(“url”)。那么(r=>{return response.json()})。然后json=>{….}
,我在回答中写的几乎相同。您不需要额外的数据变量。只需使用json
变量,然后在then
回调中接收。响应中的json字符串由解析。然后(r=>{return response.json()})
。此外,您还可以删除多余的括号,并在此处返回语句。只要。然后(r=>r.json())
就足够了。是的,但之前是data.group.map
。但这已经不重要了。我从你的解释中明白了重点。再次感谢!你说得对。我在提交答案后才注意到这个错误。