这是我的代码,它不起作用
NSError *theError = nil;
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://www.bbblllaaahhh.com"]];
NSURLResponse *theResponse =[[NSURLResponse alloc]init];
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&theResponse error:&theError];
NSMutableString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
self.city = [[NSMutableArray arrayWithArray:[string componentsSeparatedByString:@"\""]] JSONValue];
这是JSON文本
[
{
"kanji_name":"\u30ac\u30fc\u30c7\u30f3\u30d5\u30a3\u30fc\u30eb\u30ba\u3000\u3068\u306d\u308a\u516c\u5712BigBell"
}
]
它以self.city行报告,我该怎么办?
呀!我完全修复了这是我的修复代码
NSError *theError = nil;
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://www.blahblah.com"]];
NSURLResponse *theResponse =[[NSURLResponse alloc]init];
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&theResponse error:&theError];
NSMutableString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSDictionary *jsonDict = [string JSONValue];
NSArray *jsonArray = [NSArray arrayWithArray:(NSArray *)[jsonDict valueForKey:@"kanji_name"]];
NSMutableString *text = [[NSMutableString alloc] init];
[text appendFormat:@"%@",[jsonArray objectAtIndex:0]];
self.city = [NSMutableArray arrayWithObject:text];
答案 0 :(得分:2)
需要提出几个问题来帮助确定这个问题的答案。
首先,你可以放置
NSLog(@"%@",data);
在第一行之后
NSLog(@"%@", string);
在第二行之后告诉我们它向控制台报告的值是多少?这将有助于确定问题是否
1)服务器永远不会返回任何数据或返回错误的数据 2)如果数据正确地变成了字符串。如果其中任何一个操作失败,可能会导致第3行出错。
接下来,你能报告第三行给出的错误吗?有许多可能的问题。事实上,字符串可能不是正确的JSON代码,而JSON解析器正在崩溃。
第3行看起来有一个明显的问题。首先,您将基于“\”字符拆分字符串,这在这种情况下似乎是一件不寻常的事情。但无论如何,操作的顺序如下:
@ “A \ B”
将变为
[“a”,“b”]
然后JSON解析器将尝试解析[“a”,“b”],这肯定会导致错误。
至少,你会想做类似的事情,
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&theResponse error:&theError];
NSMutableString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSArray or NSDictionary *parserResults = [string JSONValue];
// This will depend on what the actual JSON string returned from the server
// With an array, maybe something like
NSString *stringWithBackslash = [NSArray objectAtIndex:0];
// With a dictionary, maybe something like
NSString *stringWithBackslash = [NSDictionary objectForKey:@"backslashString"];
self.city = [NSMutableArray arrayWithArray:[stringWithBackslash componentsSeparatedByString:@"\""]];
self.city是NSMutableArray吗?变量名称听起来应该是一个字符串。在这种情况下,你实际上想要做一些像
这样的事情NSMutableArray components = [NSMutableArray arrayWithArray:[stringWithBackslash componentsSeparatedByString:@"\""]];
// if the city is the first element of the array
self.city = [components objectAtIndex:0];
您还需要检查以确保组件(例如)具有多个元素,因为这也可能导致错误,例如,如果服务器返回错误或没有Internet连接。