同时使用2 json(或更多)我的解析不起作用

时间:2011-06-21 11:20:50

标签: iphone objective-c json

我从服务器获得了一个json。

我只能解析一个JSON。但是当我同时获得2个json(或更多)时,我的解析不起作用。它无法正确反序列化。我该如何解决这个问题?

更新

例如,我发送了5个请求,时间间隔= 0.1;有时我会

{"status": "success", "msg": "Dish1 flagged"}

- 没关系。但有时我会得到

{"status": "success", "msg": "Dish1 flagged"}{"status": "success", "msg": "Dish2 flagged"}

- 这很糟糕,我的解析器不起作用。如果我收到了

{"status": "success", "msg": "Dish1 flagged"}{"status": "success", "msg": "Dish2 flagged"}

我希望第一个json移动到垃圾箱,第二个JSON开始解析。

JSON结构可能比这些结构复杂得多。我可以控制服务器并发送有效的JSON。

我的网络课程是

-(id) init
{
    if(self=[super init])
    {
        receivedData = [[NSMutableData alloc] init];
    }
    return self;
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    [conn release];
    conn = nil;

    NSError *error;
    NSDictionary *dictionary = [[CJSONDeserializer deserializer] deserializeAsDictionary:receivedData error:&error];
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    [receivedData appendData:data];
}

- (void) createConnectionWithRequest:(NSMutableURLRequest *)request delegate:(id)delegate
{
    [receivedData setLength:0];
    conn = [[NSURLConnection alloc] initWithRequest:request delegate:delegate startImmediately:YES];
}

3 个答案:

答案 0 :(得分:1)

如何提供JSON?你能控制格式吗?

如果多个对象的结构为数组[{"like":"this"},{"or":"similar"}],则可能需要更改为

NSArray *array = [[NSArray alloc] init];

array = [[CJSONDeserializer deserializer] deserializeAsArray:receivedData error:&error];

但我没有使用过那个特定的解析器,所以语法可能不正确

答案 1 :(得分:0)

{"status": "success", "msg": "Dish1 flagged"}{"status": "success", "msg": "Dish2 flagged"}

无效的JSON。

[{"status": "success", "msg": "Dish1 flagged"}, {"status": "success", "msg": "Dish2 flagged"}]

有效。

由于您可以控制服务器,因此请确保它仅响应这些请求的有效JSON有效负载。如果问题是您将多个请求的响应连接在一起,那么请显示您的请求处理代码,以便我们可以帮助您停止这样做。

答案 2 :(得分:0)

如果无法更改服务器的输出格式,可以先将数据拆分为JSON数组,然后只使用数组中的最新数据。用大括号拆分它真的很容易。