【发布时间】:2019-01-07 03:16:57
【问题描述】:
我收到一些 JSON,其中包含结果、响应,如果查询成功,则成功值为 1。如果查询不成功,则 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";
}
我将如何设计一个成功的值集的测试,在收到上述内容时不会抛出异常?
提前感谢您的任何建议。
【问题讨论】:
-
错误是什么,究竟是哪一行导致的?
-
错误是 LLB 并且发生在以下行: if (![jsonResults isKindOfClass:[NSNull class]]... 因为它是我的 api,我能够通过更改 API 来停止错误响应包含一个成功值(失败为 0),从中似乎对 [jsonResults[@"response"][@"success"] 的引用是导致异常的原因。但是,我仍然不知道为什么对此的引用会导致异常。(我确实尝试过 bt 但无法理解)。
-
错误不是
llb。那是调试器提示。错误将出现在控制台中。 -
刚刚注意到,NSDictionary *jsonresponse = jsonResults[@"response"]; jsonresponse 不是字典,它是一个字符串。所以你可以试试 NSString *jsonresponse = jsonResults[@"response"];或 NSObject *jsonresponse = jsonResults[@"response"];
-
你能展示你的 API 调用吗?您是否在 Postman API 中进行过测试?
标签: ios objective-c json null