2011-02-24 55 views
1

我正在使用Facebook连接并尝试处理我收到的JSON对象。 我调用requstWithGraphPath方法和需要回到一个JSON对象, 试图解析它,却得到了错误:将JSON对象(NSCFDictionary)强制转换为字符串并解析它

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]; 

什么问题? 我可以通过其他方式获取字符串还是以不同方式解析对象?

谢谢。

回答

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]; 
+0

谢谢,真的有帮助! – 2011-02-25 08:53:02

+0

你如何JSONValue?排除错误 – coolcool1994 2014-06-06 17:38:23

+0

JSONValue是或至少在当时是由SBJSON添加的类别方法。 – Adam 2014-08-01 16:24:22

1

您确定错误发生在该行吗?或者它发生在上面的行吗?

如果resultNSDictionary(或CFDictionary,同样的事情),那么它已经被解析,你不需要自己做 - 这可能会导致该错误信息也上线的上方。

行:

data = [[NSData alloc] initWithData:result]; 

几乎可以肯定不是你想要做什么,因为它相当于

data = [result copy]; 

假设resultNSData对象(或NSMutableData),我猜猜它不是。

+0

非常感谢你! – 2011-02-25 08:53:49

相关问题