反序列化json流时出错

时间:2013-08-21 16:28:32

标签: objective-c json nsjsonserialization nsinputstream

我有NSInputStream *inputStream从网络连接接收小JSON对象。如果我将流读取到这样的缓冲区:

NSError *err = nil;
uint8_t buffer[1024];
NSMutableData *data = [[NSMutableData alloc] init];
while ([inputStream hasBytesAvailable]) {
    int const len = [inputStream read:buffer maxLength:sizeof(buffer)];
    if (0 < len) {
        [data appendBytes:buffer length:len];
    }
}
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:0 error:&err];

然后我得到了我期望的JSON;但这非常脆弱,因为它假设只有一个JSON对象可供读取。通过这个方案,我最终可能会尝试反序列化{"cheese":17}{"ch,这显然是无效的。我宁愿用

NSError *err = nil;
NSDictionary *json = [NSJSONSerialization JSONObjectWithStream:inputStream options:0 error:&err];

但是,但是通过调试器,我发现最后一行没有返回,并且没有记录错误!什么是正确的方法?

0 个答案:

没有答案