【问题标题】:How to check if response from server is a JSON object in Appcelerator?如何检查来自服务器的响应是否是 Appcelerator 中的 JSON 对象?
【发布时间】:2016-07-24 14:43:52
【问题描述】:

如果响应是 JSON,我如何签入 Appcelerator?

我已经在js中尝试了通常的方式。

Ti.API.info(response.constructor.name); // returns "String"
if (response instanceof JSONObject) //JSON object undefined

其他方式

        var response = this.responseText;

        if (response.constructor === {}.constructor){
            Ti.API.info('is object');
            response = JSON.parse(response);
        }
        else{
            Ti.API.info('not object');
            Ti.API.info(response.constructor); // returns some Krollback <KrollCallback: 0x7fbdc8c0abe0>
        }

我正在使用子字符串,但这似乎有缺陷。

if (response.substring(0, 1) === "{")

【问题讨论】:

    标签: json titanium appcelerator appcelerator-titanium


    【解决方案1】:

    按照 Prashant 和 Carlos 的建议,我在 onload 中使用了 try/catch,谢谢大家。

            var response = this.responseText;
            try {
                console.log("success");
                var response = JSON.parse(response);
                if (callback)
                    callback(response);
            }
            catch(e){
                console.log("error parsing");
                if (callback)
                    callback("error");
            }
    

    【讨论】:

      【解决方案2】:

      这是我正在做的验证 API 发送的 JSON 响应的操作:

      // convert http response to json 
      var CVT_ORDER_SEARCH_RESPONSE = JSON.parse(HttpResponse.responseText);
      
      // verify json response parse returned valid object 
      if (!CVT_ORDER_SEARCH_RESPONSE){
          throw 'Invalid JSON response returned by server.'; 
      }
      

      另见:JSON.parse Function (JavaScript)

      【讨论】:

      • 我通常会在知道它是 JSON 后解析响应,如果我尝试解析非 JSON 对象,则会出错。
      • @Von,我通常在 try-catch-finally 块中处理这种情况,因为我不确定当服务器向我发送不正确的 JSON 响应时,所以最好在 try-catch 中处理它们if-else 因为 if-else 需要实际值和/或数据类型。
      • 去试试 Catch。这是唯一的方法
      猜你喜欢
      • 2013-04-06
      • 2016-09-04
      • 2013-01-19
      • 2012-10-19
      • 1970-01-01
      • 1970-01-01
      • 2020-09-21
      • 2015-02-14
      • 1970-01-01
      相关资源
      最近更新 更多