无法从connectionDidFinishLoading中的数据解析JSON - 可能是数据太多了?

时间:2012-06-05 05:48:38

标签: objective-c ios json nsurlconnection sbjson

我正在向外部API发送请求并使用SBJson parser解析响应。但是,我怀疑反应是如此之长,以某种方式变得混乱。

在我的mainviewcontroller.h文件中,我设置了NSMutableData *receivedData;,以便我可以在mainviewcontroller.m文件的连接方法中使用它。

但是,在连接完成加载后,我执行以下操作:

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
    NSString *dataString = [[NSString alloc] initWithData:receivedData encoding:NSUTF8StringEncoding];
    NSArray *allData = [dataString JSONValue];
}  

但是,我收到一堆错误,说JSON没有正确格式化。所以,当我查看JSON时,它很长 - 但是在这里和那里,存在问题......例如,下面的“updated_at”。

  {
            "id": 7844333,
            "position": 3,
            "content": "Cell height is off by 5 pixels",
            "created_at": "2012-06-04T20:31:30-05:00",
            "updated_at": "2ator": {
                "id": 98258,
                "name": "Brian"
            }

我认为上面发生的事情是更新时的值为“2012-06 ...等等”,下一个键值项目将是创建者:{id,name}但它不知何故被混淆了更新了。

有类似问题的人吗?我不认为问题出在JSONValue上,因为我在解析之前会先注销dataString,这就是我发现JSON错误的地方。

我的意思是NSString *dataString = [[NSString alloc] initWithData:receivedData encoding:NSUTF8StringEncoding];只是一个长字符串,但其中有一个错误的JSON,因为它是混乱的。

2 个答案:

答案 0 :(得分:2)

您是否一次通过多个连接使用receivedData?

:)

答案 1 :(得分:-1)

我认为你的json错了。用于检查只是将json文件放入: http://jsonlint.com/

如果有效则:

将SBJSON框架类导入到您的项目中。并尝试以下代码:

 SBJSON *parser=[[SBJSON alloc]init];

NSDictionary * dictionary = [parser objectWithString:responseString];

这将通过使用:

将数据提供给字典
NSString *firstParseData=[dictionary objectForKey:@"your key"];

您可以检索数据。希望这适用于你的情况。