Ios XCODE中的JSON解析不一致(Cocoa错误3840)

Ios XCODE中的JSON解析不一致(Cocoa错误3840),ios,json,html-parsing,xcode4.5,Ios,Json,Html Parsing,Xcode4.5,我使用相同的类和方法通过两个专门编写的API下载数据。其中一个API运行良好,但另一个API产生错误3840 代码如下: +(NSDictionary *)executeSearchRequest:(NSString *)usingThisURL { NSError* error = nil; usingThisURL = [NSString stringWithFormat:@"%@&format=json&nojsoncallback=1", usingThisURL

我使用相同的类和方法通过两个专门编写的API下载数据。其中一个API运行良好,但另一个API产生错误3840

代码如下:

 +(NSDictionary *)executeSearchRequest:(NSString *)usingThisURL
 {
 NSError* error = nil;
 usingThisURL = [NSString stringWithFormat:@"%@&format=json&nojsoncallback=1", usingThisURL];
NSLog(@"URL Sent to Athletic.net: %@", usingThisURL);
// usingThisURL = [usingThisURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
 // Preceding line makes one call fail and does not correct problem with other.
 NSLog(@"[%@ %@] sent %@", NSStringFromClass([self class]), NSStringFromSelector(_cmd), usingThisURL);
 NSData *jsonData = [[NSString stringWithContentsOfURL:[NSURL URLWithString:usingThisURL] encoding:NSUTF8StringEncoding error:nil] dataUsingEncoding:NSUTF8StringEncoding];

NSLog(@"jsonData: [%@]",jsonData);

NSDictionary *results = jsonData ? [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers|NSJSONReadingMutableLeaves error:&error] : nil;
NSLog(@"json NSDictionary results: [%@]", results);
if (error) NSLog(@"[%@ %@] JSON error: %@", NSStringFromClass([self class]), NSStringFromSelector(_cmd), error.localizedDescription);
NSLog(@"[%@ %@] received %@", NSStringFromClass([self class]), NSStringFromSelector(_cmd), results);
return results;
 }
当我使用Terminal和“curl-v”命令将其向下拉时,其中一个的数据看起来正确解析如下:

 {"Search":{"Athlete":
 [{"@IDAthlete":"0123456","@FirstName":"John","@LastName":"Doe","@Gender":"M","@IDSchool":"148","@SchoolName":"All American HS","@City":"Union","@State":"ST"},
 {"@IDAthlete":"654321`","@FirstName":"Jane","@LastName":"Doe","@Gender":"F","@IDSchool":"18266","@SchoolName":"Any Ol HS","@City":"Union","@State":"ST"},]}}
未解析的数据如下所示:

 {"ROOT":{"@xmlns:sql":"urn:schemas-microsoft-com:xml-sql"/* School Info */,"row":
 {"@SelectedAthlete":"235434"},"HasTrack":{"@AthleteID":"235434"},"Athlete":
 {"@IDAthlete":"235434","@SchoolID":"148","@FirstName":"Jane","@LastName":"Doe","@Gender":"F",
 "SchType":[{"@SortID":"1","@SchoolType":"High School","@DispSchoolTypeAbbrev":"HS","School":
 {"@IDSchool":"148","@RegionID":"1","@SchoolName":"All American","SchoolDivision":[{"@DivisionID":"21036","Season":{"@IDSeason":"2012","@Display":"2012","Grade":
 {"@SingularGradeDesc":"11th Grade","@IDGrade":"11","Distance":[{"@Distance":"2600.00","@Units":"Meters","Result": ... 
我唯一能想到的是JSON被以xmlns:sql开头的描述阻塞了,或者这表明我有一个XML文件而不是JSON格式。(我以前用XML解析过这些数据。)

我可以简单地按原样操作数据,还是需要修改生成API


谢谢你的帮助

第二个JSON在与
“@xmlns:sql”
键关联的值之后有一个字符串,
/*School Info*/
。我不知道这是怎么回事(在JSON的中间有一个C风格的评论是没有意义的),但是如果你把它拿出来,你应该是好的。
如果您使用像这样的工具,它可以帮助您识别此类问题。

感谢Rob提供的答案和jsonlint的链接!