Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在fetch内解析JSON响应中的字典对象_Javascript - Fatal编程技术网

Javascript 在fetch内解析JSON响应中的字典对象

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

当服务器返回一个简单字符串时,我的Javascript代码可以正常工作 i、 e.后端正在使用

"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);
});