Как использовать под словарь в мантии с пальто?
Я решил использовать Mantle для использования некоторых конечных точек JSON, но структура JSON различается в зависимости от того, GET
или POST
в обьекте Возьмем конечную точку пользователя, например:
При запросе пользователя вы получаете ответ, подобный следующему:
{
"random_meta_data": "whatever",
"etc.": "etc.",
"payload": {
"username": "username",
"email": "username@email.com",
"etc.": "etc."
}
}
При создании пользователя вам нужно отправить что-то вроде этого:
{
"username": "username",
"email": "username@email.com",
"etc.": "etc."
}
Это не сложная проблема, но кажется достаточно распространенной Mantle
должен быть в состоянии решить это за вас.
Я знаю, что могу просто инициализировать модель мантии с dictionary[@"payload"]
, но Overcoat
выполняет сопоставление для меня автоматически, и если я собираюсь сделать это вручную, я не пользуюсь Overcoat
больше.
Поэтому мне интересно, есть ли стандартный способ решения этой проблемы с Mantle
и / или Overcoat
?
1 ответ
То, что вы описываете, называется ответом в конверте, и вы можете прочитать о том, как обращаться с теми, кто в Overcoat
README.md:
https://github.com/Overcoat/Overcoat
Другие сервисы, такие как App.net, используют конвертный ответ, который представляет собой ответ JSON верхнего уровня, содержащий запрошенные данные и дополнительные метаданные. Для этих видов услуг вы должны создать свой собственный подкласс OVCResponse и указать путь к ключу данных.
@interface AppDotNetResponse : OVCResponse
...
@end
@implementation AppDotNetResponse
+ (NSString *)resultKeyPathForJSONDictionary:(NSDictionary *)JSONDictionary
{
return @"data";
}
@end
Затем вы можете указать, какой класс ответа использовать в вашем клиенте, переопределив +responseClass.
+ (Class)responseClass {
return [AppDotNetResponse class];
}