SBJson iOS解析器方法是否已弃用?

时间:2013-01-03 16:45:01

标签: ios json sbjson

我正在使用SBJson解析器开始一个新项目,人们似乎建议将其作为新的iOS项目的互联网上最好的。我有一个非常严重的问题,就是当前的方法Stig Brautaset声称你可以在current release (3.1)上使用,似乎已被弃用,或者至少是我的编译器所说的。我似乎无法工作:

NSDictionary *dict = [responseString JSONValue];

这似乎是最新的方式或:

NSDictionary *dict = [parser objectWithString:responseString error:&error];

解析器是sbjson解析器。 XCode突出显示了这两个函数,并告诉我它们已被弃用。

我在这里做错了什么?

3 个答案:

答案 0 :(得分:9)

查看源代码herehere,它看起来都是

- (id)objectWithString:(NSString*)jsonText error:(NSError**)error

- (id)JSONValue;
从版本3.2开始,

已弃用,它将在4.0版中删除。 你确定你使用的是3.1吗?

另一方面

- (id)objectWithString:(NSString *)repr;

- (id)objectWithData:(NSData*)data;

看起来可用而不是弃用。

我建议你改用它们。

另一种方法是使用Apple提供的NSJSONSerialization类。

答案 1 :(得分:0)

使用xcode轻松解决问题的一般方法。 无论何时弃用任何代码行,最好按住键盘上的“alt”键并移动提出问题的对象并单击。 Xcode然后建议更好的编写代码的方法。 希望这有帮助

答案 2 :(得分:0)

尝试替换:

NSDictionary *dict = [responseString JSONValue];

使用:

NSDictionary *dict = [[SBJsonParser new] objectWithString:responseString];

或更好:

SBJsonParser *parser = [SBJsonParser new];
id object = [parser objectWithString:responseString];
if (parser.error || ![object isKindOfClass:[NSDictionary self]])
    @throw parser.error ?: @"not a json dictionary";// or any error handling alternative
NSDictionary *dict = object;