我从REST API收到了NSData对象data
。那包含我要解析的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);
}];
答案 0 :(得分:1)
将您的数据传递为data
NSError *error;
NSString *jsonString = nil;
if([NSJSONSerialization isValidJSONObject:data])
{
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:data
options:kNilOptions
error:&error];
jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
}
然后用@"\\\"
@"'"
的出现
NSString *formattedString = [jsonString stringByReplacingOccurrencesOfString:@"\\\"" withString:@"'"];
然后使用此formattedString。
答案 1 :(得分:0)
我已经从Json formatter & Validator调查了你的json文件,你的json文件中有很多错误,所以首先从这个验证器检查你的文件,这个格式化程序会给你错误的描述。重新构建你的json文件,如果你仍然遇到任何问题,那就问。