我收到这样的JSON对象:
{"data":null,
"error":1,
"error_code":"InvalidSID",
"sid":"",
"num_rows_total":0,
"last_insert_id":0,
"error_info":"Comment...",
"error_data":[]}
和JSONKit使用此代码:
NSString *responseString = [request responseString];
NSDictionary *requestDictionary = [responseString objectFromJSONString];
if([[requestDictionary objectForKey:@"error"] intValue]) {
if([@"InvalidSID" isEqualToString:[requestDictionary objectForKey:@"error_code"]]) {
[self.navigationController popViewControllerAnimated:YES];
}
}
产生这样的输出:
{
data = "<null>";
error = 1;
"error_code" = InvalidSID;
"error_data" = ();
"error_info" = "Comment...";
"last_insert_id" = 0;
"num_rows_total" = 0;
sid = "";
}
问题是,由于if
周围缺少引号,因此永远不会调用此InvalidSID
语句。 JSONKit是否存在使这些引号消失的已知问题?
答案 0 :(得分:0)
你混淆了&#34;描述&#34; NSDictionary的输出,带有键的值。通过使用一些简单的侦探工作,你也可以节省很多时间(也就是你发布这个时间到得到回应的时间)。
我认为你所谓的&#34;输出&#34;
的结果是上面的结果NSLog(@"%@", requestDictionary);
所以在那之后尝试这个:
// Just to be complete
id ee = [requestDictionary objectForKey:@"error"];
NSLog(@"error=%@ intValueOfError=%d classOfErrorCode=%@",
ee, [ee intValue], NSStringFromClass([ee class]) );
// Where I suspect you may discover something
id ec = [requestDictionary objectForKey:@"error_code"];
NSLog(@"errorCode=%@ classOfErrorCode=%@",
ec, NSStringFromClass([ec class]) );
我们这样做是因为这里显然有些错误,我们希望了解更多有关我们手头的物品的信息。我猜你是否会做上述事情,你会发现一些你没想到的事情。