我正在解析和NSString
值,但在控制台中获取null
。请帮我解决这个问题。
NSString *responseData = [[NSString alloc] initWithData:_responseData encoding:NSASCIIStringEncoding];
NSLog(@"Data: %@", responseData);
NSData *data = [responseData dataUsingEncoding:NSUTF8StringEncoding];
id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
NSDictionary *res = [json objectForKey:@"demo"];
NSLog(@"res is %@",res);
答案 0 :(得分:1)
我的一个项目遇到了类似的问题。我试图从NSData创建NSString(来自webservice的响应),我得到了一个零。我发现在创建String时使用NSASCIIStringEncoding解决了我的问题。事实证明,即使UTF8具有所有ASCII字符,char *也可能无法正确排列某些字符,默认情况下,init方法执行非合法编码,这意味着在遇到意外字符时会返回nil。 对于您的情况,这可能是您的代码。
NSString *responseData = [[NSString alloc] initWithData:_responseData encoding:NSASCIIStringEncoding];
NSLog(@"Data: %@", responseData);
NSData *data = [responseData dataUsingEncoding:NSASCIIStringEncoding];
id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
NSDictionary *res = [json objectForKey:@"demo"];
NSLog(@"res is %@",res);
注意:我不确定您为什么要进行所有_responseData->数据转换。如果您只是将_responseData反序列化为json对象,则可以直接在NSJSONSerialization中使用它。如下所示。
id json = [NSJSONSerialization JSONObjectWithData:_responseData options:0 error:nil];
有关详细信息,请查看此link。
答案 1 :(得分:0)
因为您使用不同的编码,可能会出现错误?尝试在NSString和NSData中使用NSUTF8StringEncoding。
答案 2 :(得分:0)
来自NSString class reference:
-initWithData:encoding:
返回值
通过使用编码将数据中的字节转换为Unicode字符来初始化NSString对象。归来了 对象可能与原始接收者不同。如果是,则返回nil 由于某种原因初始化失败(例如,如果数据没有 代表有效的编码数据)。
你从哪里获得_responseData
?它绝对是NSData
对象吗?
您确定使用的是正确的编码吗?
您可以打印_responseData
并更新您的问题,以便我们查看一下吗?