我知道我们在进行序列化时通常会使用NSDictionary
或NSArray
,但我不知道如果我们更喜欢NSDictionary
会有什么优势吗?
NSError* error;
NSDictionary* json = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];
答案 0 :(得分:2)
这不是优先考虑的问题。 JSONObjectWithData:
方法返回id
类型的对象。
数据中JSON数据的Foundation对象,如果出现错误,则为nil 发生。
因此,您无法选择是否需要NSArray
或NSDictionary
。实际上,您应该始终进行检查以确保返回的对象是您期望的类型。
您的代码应如下所示:
NSError* error;
id JSONObject = [NSJSONSerialization JSONObjectWithData:responseData
options:kNilOptions
error:&error];
if ([JSONObject isKindOfClass:[NSDictionary class]])
{
NSDictionary *JSONDictionary = (NSDictionary *)JSONObject;
// Do your stuff.
}
否则,当你正在调用的终端返回的JSON
不再是字典时,你会冒着崩溃的风险,但是阵列或任何你不期望的东西。