使用Restkit将整数作为json发送

时间:2012-02-07 01:29:58

标签: ios json parsing rest restkit

现在我正在使用Restkit从iPhone设备向远程服务器发出REST和RPC请求,这是一个非常棒的库。

现在我遇到了一个简单的问题。我的服务器期望一些数据为整数。这意味着一个看起来像这样的json数组。

{'myInteger':1234}

请注意my_integer_field键的值不在''之间。这意味着该值是一个数字而不是字符串。

当我制作映射和所有内容时,我将my_integer_field设置为对象定义中的NSNumber值。但是当对象被解析为Json时,值出现在''like:

之间
{'myInteger':'1234'}

所以我从服务器得到一个错误,因为假设'1234'代表一个字符串而不是一个数字。有没有办法强制json解析不包括''在NSNumber字段上?

更新

以下是代码:

//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 :(得分:0)

我不确定为什么会出现这种行为,但您是否尝试过使用:

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

虽然我认为如果没有指定serializationMapping,默认情况下RestKit会使用inverseMapping,所以你可以完全不用掉那部分。