我正在使用facebook connect并尝试处理我收到的JSON对象。 我调用了requstWithGraphPath方法并需要返回一个JSON对象, 试图解析它并收到错误:
SBJSON *parser = [[SBJSON new] autorelease];
NSData *data = [[NSData alloc] initWithData:result];
NSString *jsonString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; -> in this line - "[__NSCFDictionary length]: unrecognized selector sent to instance"
NSArray *events = [parser objectWithString:jsonString];
有什么问题? 我可以用其他方式获取字符串或以不同方式解析对象吗?
感谢。
答案 0 :(得分:1)
您确定错误发生在该行上,还是发生在上一行?
如果result
是NSDictionary
(或CFDictionary
,同样的事情),那么它已经被解析了,您不需要自己做 - 而且可能会导致该错误消息在上面的那一行也是如此。
该行:
data = [[NSData alloc] initWithData:result];
几乎肯定不是你想要做的,因为它等同于
data = [result copy];
假设result
是NSData
对象(或NSMutableData
),我猜它不是。
答案 1 :(得分:1)
如果您正在使用委托回调
- (void)request:(FBRequest *)request didLoad:(id)result;
已经为您完成了解析工作。遍历NSDictionary或NSArray以查找您要查找的数据。如果您正在使用委托回调
- (void)request:(FBRequest *)request didLoadRawResponse:(NSData *)data;
您应该使用数据初始化NSString,并使用SBJSON添加到NSString的类别方法来创建ID。这是假设数据是构造字符串的数据。
NSString *jsonString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
id result = [jsonString JSONValue];