【问题标题】:Weird JSON parsing error?奇怪的 JSON 解析错误?
【发布时间】:2013-02-12 18:45:19
【问题描述】:

我以前能够完美地解析这个 JSON,完全没有错误,但突然它停止工作,它不是我的 API 密钥......

这就是我要解析的内容:http://pastebin.com/vv8ScBfZ

这是我的解析代码:

NSError *myError = nil;
NSDictionary *flighttrackjson = [NSJSONSerialization JSONObjectWithData:jsonresponse options:NSJSONReadingMutableLeaves  error:&myError];
NSArray *FlightStatus =  [flighttrackjson objectForKey:@"flightStatuses"];
NSString *FlightID = [FlightStatus valueForKey:@"flightId"];
NSString *DepartACode = [FlightStatus valueForKey:@"departureAirportFsCode"];
NSString *ArivalACode = [FlightStatus valueForKey:@"arrivalAirportFsCode"];
NSArray *DepartATime = [FlightStatus valueForKey:@"departureDate"];
NSArray *AriveATime = [FlightStatus valueForKey:@"arrivalDate"];
NSString *DepartTimeString = [DepartATime valueForKey:@"dateLocal"];
NSString *ArriveTimeString = [AriveATime valueForKey:@"dateUtc"];
NSArray *Delays = [FlightStatus valueForKey:@"delays"];
NSString *DepartDelayMinutes = [Delays valueForKey:@"departureGateDelayMinutes"];
NSString *ArriveDelayMinutes = [Delays valueForKey:@"arrivalGateDelayMinutes"];
NSArray *AirportInfo = [FlightStatus valueForKey:@"airportResources"];
NSString *DepartTerminal = [AirportInfo valueForKey:@"departureTerminal"];
NSString *DepartAGate = [AirportInfo valueForKey:@"departureGate"];
NSString *ArriveTerminal = [AirportInfo valueForKey:@"arrivalTerminal"];
NSString *ArriveAGate = [AirportInfo valueForKey:@"arrivalGate"];
NSString *BaggageClaim = [AirportInfo valueForKey:@"baggage"];
flightID.text=FlightID;
DepartCode.text=DepartACode;
ArrivalCode.text=ArivalACode;
DepartTime.text=DepartTimeString;
ArriveTime.text=ArriveTimeString;
DepartDelay.text=DepartDelayMinutes;
ArriveDelay.text=ArriveDelayMinutes;
DepartTerm.text=DepartTerminal;
DepartGate.text=DepartAGate;
ArriveTerm.text=ArriveTerminal;
ArriveGate.text=ArriveAGate;
Baggage.text=BaggageClaim;

当我运行它时,我得到了这个错误:

    *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayI isEqualToString:]: unrecognized selector sent to instance 0x8aa85f0'

不,我不想将数组的值分配给字符串。所以我在这里很困惑。

想法?

谢谢!

【问题讨论】:

  • 阅读错误信息。看看它在哪里被提升。
  • @HotLicks 不要指望不可能的事情。 :P

标签: json parsing nsstring nsarray nsurlconnection


【解决方案1】:

不,我不想将数组的值分配给字符串

哦,是的。

FlightStatus = [flighttrackjson objectForKey:@"flightStatuses"];
FlightID = [FlightStatus valueForKey:@"flightId"];

FlightStatus 是一个数组,而不是一个字典(例如使用 JSONlint 来漂亮地打印 JSON,你会看到它)。

此外:我怀疑您的代码中有几个类似的错误,其中一个特别是 flightId 对应于 NSNumber 而不是 NSString - 你也会因此而崩溃。

请研究 JSON 的官方参考资料和 NSJSONSerialization 类的文档,以了解哪些 JSON 数据类型映射到哪些 Foundation 类(顺便说一句,这很合乎逻辑)。

【讨论】:

  • 很抱歉,感谢您的提示,我一定会阅读更多内容以自学。
猜你喜欢
  • 1970-01-01
  • 2015-05-23
  • 1970-01-01
  • 1970-01-01
  • 2014-02-20
  • 2012-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多