Javascript 在fetch内解析JSON响应中的字典对象
当服务器返回一个简单字符串时,我的Javascript代码可以正常工作 i、 e.后端正在使用Javascript 在fetch内解析JSON响应中的字典对象,javascript,Javascript,当服务器返回一个简单字符串时,我的Javascript代码可以正常工作 i、 e.后端正在使用 "body": json.dumps(string_object), 有效的Javascript代码: fetchRetry(`${API_ENDPOINT}?prompt=${prompt}&model=${model}`, 10000,6, { method: 'GET', headers: { 'content-type': 'application/j
"body": json.dumps(string_object),
有效的Javascript代码:
fetchRetry(`${API_ENDPOINT}?prompt=${prompt}&model=${model}`, 10000,6, {
method: 'GET',
headers: { 'content-type': 'application/json' },
}).then((response) =>{
console.log("RESPONSE")
return response.json()
}).then((data) => {
console.log("DATA")
return JSON.parse(data);
}).then((data) => {
// Process data here
}).catch(function(error){
console.log("Got error)
});;
});
我现在修改了后端以返回字典
"body": json.dumps(dictionary),
在我的浏览器中的响应中,我可以看到:
[{"text": "Sample 1", "sentiment": "Negative"}, {"text": "Sample 2", "sentiment": "Negative"}, {"text": "Sample 3", "sentiment": "Positive"}, {"text": "Sample 4", "sentiment": "Positive"}, {"text": "Sample 5", "sentiment": "Positive"}]
然而,在fetchRetry调用中,我得到了响应承诺,但它没有输入“then((data)”并进入catch块。控制台上出现了以下内容:
RESPONSE
twitter.js:93 Got error
我不是Javascript开发人员,有人能帮我完成这项工作吗?提前谢谢。当您在响应上调用.json()
时,它会自动调用响应文本上的json.parse
,将其转换为数组(或对象,或任何结果)。再次使用JSON解析它。parse
没有意义,可能会抛出(或产生格式错误的输出)
使用:
如果出现错误,请确保记录错误,以便于调试。您不需要在
响应时再次解析数据。json
将解析数据
json()是一个函数,它读取响应流直到完成,并将响应解析为json。此操作可能需要时间,因此它不只是返回json,而是返回另一个承诺。此承诺的success函数将得到解析后的json作为参数
试试这个
fetchRetry(`${API_ENDPOINT}?prompt=${prompt}&model=${model}`, 10000, 6, {
method: 'GET',
headers: { 'content-type': 'application/json' },
}).then(response => {
console.log("RESPONSE");
return response.json();
}).then(data => {
console.log("DATA")
// Process data here
}).catch(error => {
console.log("Got error);
});
谢谢。它成功了。因为在解析之前我有一个print语句,所以我希望它至少在进入catch块之前打印该语句。
fetchRetry(`${API_ENDPOINT}?prompt=${prompt}&model=${model}`, 10000, 6, {
method: 'GET',
headers: { 'content-type': 'application/json' },
}).then(response => {
console.log("RESPONSE");
return response.json();
}).then(data => {
console.log("DATA")
// Process data here
}).catch(error => {
console.log("Got error);
});