我有一个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];
但是,但是通过调试器,我发现最后一行没有返回,并且没有记录错误!什么是正确的方法?