我从REST API收到NSData对象data
。包含我想分析的JSON数据。目标C中的Deserialise JSON字符串
{
JsonResult = "[{
\"IsAuth\":\"true\",
\"User\":\"
[
{
\\\"userid\\\":\\\"josephH\\\",
\\\"firstname\\\":\\\"joseph\\\",
\\\"lastname\\\":\\\"Henry\\\",
}
]\"}]"
}
这个声明给了我一个像下面这样的字符串的结果,我不能解析为JSON。 myData = [data valueForKey:@"JsonResult"];
"[{
\"IsAuth\":\"true\",
\"User\":\"
[
{
\\\"userid\\\":\\\"josephH\\\",
\\\"firstname\\\":\\\"joseph\\\",
\\\"lastname\\\":\\\"Henry\\\",
}
]\"}]"
当我试图通过这个mydata
到JSONSerialization
代码崩溃。
如何将上述字符串转换为NSDictionary,以便我可以解析它们并使用IsAuth和User的值。
代码:
[LDService authenticateUser:Uname.text passwordString:Password.text completeBlock:^(NSData * data){
NSError *error;
NSData *jsonData;
NSString *jsonString = nil;
NSMutableDictionary *jsonDict;
if([NSJSONSerialization isValidJSONObject:data])
{
jsonData = [NSJSONSerialization dataWithJSONObject:data
options:kNilOptions
error:&error];
jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
}
NSString *formattedString = [jsonString stringByReplacingOccurrencesOfString:@"\\\"" withString:@"'"];
NSLog(@"Formatted string %@",formattedString);
[jsonDict setObject:formattedString forKey:@"JsonResult"];
NSLog(@"Parsed json %@",jsonDict);
}];
您的回应JsonResult是字符串不正确的JSON。 –
你可以检查你的JSON无效格式:http://jsonviewer.stack.hu –
其实,我已经多次序列化了json。所以JsonResult是一个字符串,但它包含的数据就像JSON。我缩短了JSON结果,但最初它是一个很长的JSON,它在一个字符串中包含JSON。我必须多次反序列化数据,但我没有这样做。 –