IOS/Objective-C:针对 nil 和 null 的 JSON 响应测试

IOS/Objective-C: JSON response testing for nil and null

提问人:user6631314 提问时间:7/31/2018 最后编辑:rmaddyuser6631314 更新时间:7/31/2018 访问量:97

问:

我收到一些 JSON,其中包含结果、响应,如果查询成功,则表示成功,则表示成功。如果查询不成功,则“成功的 JSON 设置”中没有值。我想做的是测试 1 的成功值,但是,我检测此问题的代码会引发异常。

NSDictionary *jsonResults = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
NSDictionary *jsonresponse = jsonResults[@"response"];
if (![jsonResults isKindOfClass:[NSNull class]]
    &&![jsonResults[@"response"]isKindOfClass:[NSNull class]]
    &&![jsonResults[@"response"][@"success"]isKindOfClass:[NSNull class]]){
    //CODE BREAKS BEFORE GETTING HERE
    NSLog(@"got here");

这是登录到控制台时失败时的 JSON 的样子:

{
    code = 400;
    error = "0(NSNull)";
    response = "Bad Request-No id found";
} 

我该如何为一组成功的值进行测试,而不会在收到上述内容时引发异常?

提前感谢您的任何建议。

ios objective-c json null

评论

0赞 rmaddy 7/31/2018
错误是什么,究竟是哪一行导致了错误?
0赞 user6631314 7/31/2018
错误是 LLB,发生在以下行:if (![jsonResults isKindOfClass:[NSNull class]]...由于它是我的 api,因此我能够通过更改 API 响应以包含成功值(失败时为 0)来阻止错误,从该值中似乎对 [jsonResults[@“response”][@“success”] 的引用是导致异常的原因。但是,我仍然不知道为什么对此的引用会导致异常。(我确实尝试过bt,但无法理解)。
0赞 rmaddy 8/1/2018
错误不是 。这是调试器提示符。该错误将显示在控制台中。llb
0赞 GeneCode 8/1/2018
刚刚注意到了,NSDictionary *jsonresponse = jsonResults[@“response”];jsonresponse 不是字典,而是 string.so 你可以试试 NSString *jsonresponse = jsonResults[@“response”];或 NSObject *jsonresponse = jsonResults[@“response”];
0赞 Priyanka Patil 8/1/2018
你能展示你的 API 调用吗?您是否在 Postman API 中进行过测试?

答:

0赞 GeneCode 7/31/2018 #1

与其检查错误字符串或响应,不如检查回复代码(即 400、200 等)。标准代码列表可在此处获得: https://en.wikipedia.org/wiki/List_of_HTTP_status_codes

评论

0赞 GeneCode 8/1/2018
即使手动,您也应该使用标准代码。基于代码检测错误是要走的路,而不是检测将来可能更改的字符串。