将JSON对象(NSCFDictionary)转换为字符串并对其进行解析

时间:2011-02-24 22:57:02

标签: iphone objective-c json

我正在使用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];

有什么问题? 我可以用其他方式获取字符串或以不同方式解析对象吗?

感谢。

2 个答案:

答案 0 :(得分:1)

您确定错误发生在该行上,还是发生在上一行?

如果resultNSDictionary(或CFDictionary,同样的事情),那么它已经被解析了,您不需要自己做 - 而且可能会导致该错误消息在上面的那一行也是如此。

该行:

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

几乎肯定不是你想要做的,因为它等同于

data = [result copy];

假设resultNSData对象(或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];