1

我有一个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];

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

4

0 回答 0