1

我正在向外部 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"
            }

我认为上面发生的事情是 updated at 的值为“2012-06...etc”,下一个键值项将是 creator : { id, name } 但它不知何故被混杂在了 updated at 中。

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

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

4

2 回答 2

2

Are you using receivedData by more than one connection at once?

:)

于 2012-06-06T18:02:09.407 回答
-1

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

如果有效,则:

将 SBJSON 框架类导入您的项目。然后尝试以下代码:

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

NSDictionary * dictionary = [parser objectWithString:responseString];

这会将您的数据输入字典,然后使用:

NSString *firstParseData=[dictionary objectForKey:@"your key"];

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

于 2012-06-05T07:16:22.650 回答