gpt4 book ai didi

javascript - 我是否将映射变量正确设置为获取的 json?

转载 作者:行者123 更新时间:2023-11-28 18:30:24 25 4
gpt4 key购买 nike

下面有一些代码可以将获取的 json 转换为字符串并删除大括号并将其解析为映射变量:

let result = '';
let map = [];

fetch(link)
.then(function(response) {
return response.json();
}).then(function(json) {
result = JSON.stringify(json); //json here is like [{'a':1,'a2':2},{'b':11,'b2':12}]
result = result.substring(1, result.length - 1);
map = JSON.parse(result);
}).catch(function(ex) {
console.log('parsing failed', ex);
});

我尝试简单地设置 map=json 但它都给出了相同的错误,即我的 map 有重复的键。

如果我将 map 变量硬编码为 [{'id':1,code: 007},{'id':2, code:014}] 它有效。我尝试将结果更改为字符串后记录结果,其与示例完全相同。换句话说,设置 map=json 应该首先起作用。

我想我可能错过了一些东西。它是什么?

编辑#1:

fetch(link)
.then(function(response) {
return response.json();
}).then(function(json) {
setData(json);
document.getElementById("result").innerHTML = json;
}).catch(function(ex) {
console.log('parsing failed', ex);
});


function setData(json) {
map = json;
}

我已经尝试了 Naomik 给出的解决方案,除了没有 response ok 部分。我仍然收到与 map = json 相同的错误。有什么帮助吗?

最佳答案

您不能在异步处理程序中设置类似的变量,并期望在处理程序外部设置它。更多相关信息请参见:"How do I return the response from an asynchronous call?"

我只是将您的问题标记为该问题的重复项,但您的代码还存在其他问题,所以我现在要解决这些问题

在第二个 .then 调用中,您尝试处理 json 但操作不正确

// Why exactly are you re-stringifying the data we just parsed ?
result = JSON.stringify(json);

// ... wtf ?
result = result.substring(1, result.length - 1);

// Same as above, any vars you set here cannot be read outside of the callback.
// This won't work like you expect (see the related question I linked above)
map = JSON.parse(result);

请记住,JSON 只是一个代表您的数据的字符串,没有其他内容

  • JSON.parse 将获取 json string 并将其转换为数据。
  • JSON.stringify 将获取数据并将其转换为 json 字符串。
<小时/>

这个例子可能对你有一点帮助

fetch(link).then(function(response) {
if (response.ok)
// read JSON response and parse it
return response.json()
else
// response is not OK, throw error
throw Error(response.status + " " + response.statusText)
})
.then(function(data) {
console.log("Your data has arrived!")
console.log("Do something here with your data")
doSomething(data)
})
.catch(function(err) {
console.error(err.message)
})

function doSomething(data) {
console.log("Here's your data:", data);
}

关于javascript - 我是否将映射变量正确设置为获取的 json?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38138230/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com