Come posso verificare su Appcelerator se la risposta è un JSON?
Ho provato il solito modo in js.
Ti.API.info(response.constructor.name); // returns "String"
if (response instanceof JSONObject) //JSON object undefined
Altri modi
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>
}
Sto usando la sottostringa, ma sembra solo imperfetto.
if (response.substring(0, 1) === "{")
risposte:
1 per risposta № 1Seguendo il consiglio di Prashant e Carlos, ho usato un try / catch all'interno del onload, grazie ragazzi.
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");
}
0 per risposta № 2
Ecco cosa sto facendo per verificare una risposta JSON inviata da un'API:
// 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.";
}
Vedi anche : Funzione JSON.parse (JavaScript)