gpt4 book ai didi

javascript - 如何执行带有错误响应的 JSON api 调用?

转载 作者:行者123 更新时间:2023-11-28 03:34:08 25 4
gpt4 key购买 nike

我使用 Javascript 通过 JSON API 调用检索粘贴到特定过滤器中的事件产品的数量。我的典型 react 是

{"total":34,"product_ids":["PRODUCT1","PRODUCT2",....."]}

当产品存在时,我的脚本工作正常,但当没有产品处于事件状态时,响应将是:

{"error":"No products found, please check request settings"}

在这种情况下,脚本将会崩溃。

我尝试做的是将 var NumEdPicks 设置为 0 当我收到错误时,但我真的不知道如何,因为脚本崩溃时找不到“总计”。

这就是脚本的检索部分的样子

// Retrieve
var url = 'http://api.jetlore.com/products/products_by_filter.json?jl_cid=' + clientID + '&filter=' + filterName + '&per_page=' + maxCount + '&page=1';
var response = HTTP.Get(url);
var responseObj = Platform.Function.ParseJSON(response["Content"]);
var NumEditorsPick = responseObj.total;
if(NumEditorsPick>maxCount){ var NumEditorsPick = maxCount;}

当我收到错误响应时,我想将 NumEditorsPick 设置为 0。我正在考虑但不起作用的一些事情:

var NumEditorsPick = responseObj.total || 0

var NumEditorsPick = ‘total’ in responseObj ? responseObj.total : 0

没有总计时如何定义NumEditorsPick

到目前为止我已经尝试过:

if (responseObj.hasOwnProperty('total')){
var NumEditorsPick = responseObj.total;
}else{
var NumEditorsPick = 0;
}

还有

  if (responseObj.has("total")){var NumEditorsPick = responseObj.total;
}
if (responseObj.has("error")){var NumEditorsPick = 0;
}

两者都会使我的脚本的执行崩溃,所以我开始认为,当出现错误响应时,它只是停止脚本并忽略其余部分,这可能吗?那么,如何忽略这个错误响应呢?

编辑:按照评论中的建议使用 try/catch 方法后,我终于成功了:

var NumEditorsPick;

try {
var response = HTTP.Get(url);
var responseObj = Platform.Function.ParseJSON(response["Content"]);
NumEditorsPick = responseObj.total;
} catch (error) {
NumEditorsPick = 0;
}

最佳答案

您可以使用Javascript的hasOwnProperty()检查解析 JSON 是否具有您要查找的 key 。

在这种情况下,我会是这样的:

var responseObj = Platform.Function.ParseJSON(response["Content"]);
if (responseObj.hasOwnProperty('error')){
// handle error msg
}else{
// do something else
}

Here's a simple example使用您提供的 JSON 输入。

<小时/>

更新

好的,所以我最初的答案是基于您在这里所说的:

My script is working fine when products are present but when none of the products are active the response will be:

{"error":"No products found, please check request settings"}

但是您调用的服务不会返回包含错误的 JSON 字符串。相反,它会返回 404,因此任何解析或使用响应内容的尝试都是无效的。

因此,首先,您可以尝试将 HTTP.Get(url) 包装在 try/catch 方法中,并在 catch 子句中将 NumEdPicks 设置为零。

另一种选择是检查 HTTP.Get() 方法文档以查看响应对象是否具有状态(例如:response.Status),或者是否可以传递响应和错误的回调函数,如 AJAX 中的示例:

$.ajax({
url: 'yourUrl',
type: 'GET',
success: function(data){
// Set NumEdPicks to total and do other stuff
},
error: function(data) {
// Set NumEdPicks to zero
}
});

关于javascript - 如何执行带有错误响应的 JSON api 调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57896391/

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