flickr 无法解析 JSON
flickr not able to parse JSON
我正在使用 flickr public API,我在解析 JSON 时遇到问题。这是我的代码。
NSString *urlString = @"https://api.flickr.com/services/feeds/photos_public.gne?format=json";
NSURL *url = [NSURL URLWithString:urlString];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
// operation.responseSerializer = [AFJSONResponseSerializer serializer];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
//(JSON text did not start with array or object and option to allow fragments not set.)
NSString *rawString = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
NSData *refinedData = [responseObject subdataWithRange:NSMakeRange([@"jsonFlickrFeed(" length], [responseObject length]-([@"jsonFlickrFeed(" length]+1))];
NSError *parseError = nil;
NSDictionary *jsonObject=[NSJSONSerialization
JSONObjectWithData:refinedData
options:NSJSONReadingMutableLeaves
error:&parseError];
NSError *parsingError = nil;
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
}];
[operation start];
解析时出错:
Error Domain=NSCocoaErrorDomain Code=3840 "The data couldn’t be read because it isn’t in the correct format." (Invalid escape sequence around character 15901.) UserInfo=0x7fa613da71c0 {NSDebugDescription=Invalid escape sequence around character 15901.}
解析时是否需要指定特定的字符集?
由于 API 响应不在我的控制范围内,因此需要在我这边完成哪些更改。
解决方法:
@vishnuvaran 的猜测在逻辑上是正确的,除此之外我们需要转义“\”这个字符然后只有我能够解析 JSON.
[requiredString replaceOccurrencesOfString:@"\\'" withString:@" " options:NSLiteralSearch range:NSMakeRange(0, [requiredString length])];
您提供的子数据有误 range.Just 更改此行
NSData *refinedData = [responseObject subdataWithRange:NSMakeRange([@"jsonFlickrFeed(" length], [responseObject length]-([@"jsonFlickrFeed(" length]+1))];
下线
NSData *refinedData = [responseObject subdataWithRange:NSMakeRange([@"jsonFlickrFeed(" length], ([responseObject length]-1)-([@"jsonFlickrFeed(" length]))];
希望对您有所帮助。
我正在使用 flickr public API,我在解析 JSON 时遇到问题。这是我的代码。
NSString *urlString = @"https://api.flickr.com/services/feeds/photos_public.gne?format=json";
NSURL *url = [NSURL URLWithString:urlString];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
// operation.responseSerializer = [AFJSONResponseSerializer serializer];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
//(JSON text did not start with array or object and option to allow fragments not set.)
NSString *rawString = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
NSData *refinedData = [responseObject subdataWithRange:NSMakeRange([@"jsonFlickrFeed(" length], [responseObject length]-([@"jsonFlickrFeed(" length]+1))];
NSError *parseError = nil;
NSDictionary *jsonObject=[NSJSONSerialization
JSONObjectWithData:refinedData
options:NSJSONReadingMutableLeaves
error:&parseError];
NSError *parsingError = nil;
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
}];
[operation start];
解析时出错:
Error Domain=NSCocoaErrorDomain Code=3840 "The data couldn’t be read because it isn’t in the correct format." (Invalid escape sequence around character 15901.) UserInfo=0x7fa613da71c0 {NSDebugDescription=Invalid escape sequence around character 15901.}
解析时是否需要指定特定的字符集?
由于 API 响应不在我的控制范围内,因此需要在我这边完成哪些更改。
解决方法: @vishnuvaran 的猜测在逻辑上是正确的,除此之外我们需要转义“\”这个字符然后只有我能够解析 JSON.
[requiredString replaceOccurrencesOfString:@"\\'" withString:@" " options:NSLiteralSearch range:NSMakeRange(0, [requiredString length])];
您提供的子数据有误 range.Just 更改此行
NSData *refinedData = [responseObject subdataWithRange:NSMakeRange([@"jsonFlickrFeed(" length], [responseObject length]-([@"jsonFlickrFeed(" length]+1))];
下线
NSData *refinedData = [responseObject subdataWithRange:NSMakeRange([@"jsonFlickrFeed(" length], ([responseObject length]-1)-([@"jsonFlickrFeed(" length]))];
希望对您有所帮助。