Чтобы ответить на ваш вопрос о том, как это сделать , используя SBJson : Реализуйте метод proxyForJson
. Если вы не сериализуете NSArray
или NSDictionary
, вы должны переопределить этот метод для работы сериализации.
Вы можете увидеть, что это так, посмотрев исходный код SBJson (в SBJsonWriter.m):
- (NSData*)dataWithObject:(id)object {
...
if ([object isKindOfClass:[NSDictionary class]])
ok = [streamWriter writeObject:object];
else if ([object isKindOfClass:[NSArray class]])
ok = [streamWriter writeArray:object];
else if ([object respondsToSelector:@selector(proxyForJson)])
return [self dataWithObject:[object proxyForJson]];
else {
self.error = @"Not valid type for JSON";
return nil;
}
...
}
}
Реализация proxyForJson
в Animal.m
, как это (не проверено):
- (NSDictionary*) proxyForJson
{
return [NSDictionary dictionaryWithObjectsAndKeys:self.name, @"name",
self.description, @"description",
self.imageURL, @"imageURL",
nil];
}