Отправка целого числа как json с помощью Restkit - PullRequest
3 голосов
/ 07 февраля 2012

Сейчас я работаю с Restkit, чтобы сделать REST и RPC-запрос к удаленному серверу с устройства iPhone, это довольно классная библиотека.

Прямо сейчас я застрял с простой проблемой. Мой сервер ожидает некоторые данные как целое число. Это означает, что массив json выглядит следующим образом.

{'myInteger':1234}

Обратите внимание, что значение ключа my_integer_field не находится между ''. Это означает, что значение является числом, а не строкой.

Когда я делаю сопоставления и все прочее, я устанавливаю my_integer_field в качестве значения NSNumber в определении объекта. Но когда объект анализируется в Json, значение появляется между '', например:

{'myInteger':'1234'}

Поэтому я получаю сообщение об ошибке от сервера, поскольку предполагается, что «1234» представляет собой строку, а не число. Есть ли способ заставить разбор json не включать '' в поля NSNumber?

UPDATE

Вот код:

//myclass.h

@interface myClass : NSObject {

    NSNumber *myInteger;

}

@property (nonatomic, retain) NSNumber *myInteger;

//appDelegate.m here is where i define the mappings for everything.

//myClass MAPPING

RKObjectMapping* myClassMapping = [RKObjectMapping mappingForClass:[myClass class]];
[myClassMapping mapAttributes:@"myInteger", nil];
[[RKObjectManager sharedManager].mappingProvider addObjectMapping:myClassMapping];

// myClass SERIALIZATION

RKObjectMapping* myClassSerializationMapping = [RKObjectMapping mappingForClass:[NSMutableDictionary class]];
[myClassSerializationMapping mapAttributes:@"myInteger", nil];
[[RKObjectManager sharedManager].mappingProvider setSerializationMapping:myClassSerializationMapping forClass:[myClass class]];

Я что-то упустил?

1 Ответ

0 голосов
/ 27 февраля 2012

Я не совсем уверен, почему вы получаете такое поведение, но вы пытались просто использовать:

RKObjectMapping* myClassSerializationMapping = [myClassMapping inverseMapping]; [[RKObjectManager sharedManager].mappingProvider setSerializationMapping:myClassSerializationMapping forClass:[myClass class]];

Хотя я считаю, что RestKit по умолчанию использует inverseMapping, если не используется serializationMappingуказан, так что вы можете полностью исключить эту часть.

...