我正在使用 restkit 将创建操作从 mu ipad 应用程序发布到我的 rails 应用程序。我为属性创建映射:
- (void) initCustomerMapping
{
RKObjectMapping *customerSerializationMapping = [RKObjectMapping mappingForClass:[NSMutableDictionary class]];
[customerSerializationMapping mapKeyPath:@"id" toAttribute:@"id"];
[customerSerializationMapping mapKeyPath:@"lastname" toAttribute:@"lastname"];
[customerSerializationMapping mapKeyPath:@"firstname" toAttribute:@"firstname"];
[customerSerializationMapping mapKeyPath:@"house_name" toAttribute:@"house_name"];
[customerSerializationMapping mapKeyPath:@"sci" toAttribute:@"sci"];
[customerSerializationMapping mapKeyPath:@"water_used" toAttribute:@"water_used"];
[customerSerializationMapping mapKeyPath:@"address_line_1" toAttribute:@"address_line_1"];
[customerSerializationMapping mapKeyPath:@"address_line_1" toAttribute:@"address_line_2"];
[customerSerializationMapping mapKeyPath:@"postal_code" toAttribute:@"postal_code"];
[customerSerializationMapping mapKeyPath:@"city" toAttribute:@"city"];
[[RKObjectManager sharedManager].mappingProvider setSerializationMapping:customerSerializationMapping forClass:[Customer class]];
}
我发送请求:
Customer* customer = [[Customer alloc] init];
customer.lastname = lastname.text;
customer.firstname = firstname.text;
customer.house_name = house_name.text;
customer.sci = sci.text;
customer.water_used = water_used.text;
customer.address_line_1 = address_line_1.text;
customer.address_line_2 = address_line_2.text;
customer.postal_code = postal_code.text;
customer.city = city.text;
[[RKObjectManager sharedManager] postObject:customer delegate:self];
但是 json 发送看起来像:
{"water_used"=>"710", "house_name"=>"test", "address_line_1"=>"test", "city"=>"test", "sci"=>"546", "firstname"=>"test", "lastname"=>"test", "address_line_2"=>"test", "postal_code"=>"75896"}
我想得到:
{ "customer" =>
{"water_used"=>"710", "house_name"=>"test", "address_line_1"=>"test", "city"=>"test", "sci"=>"546", "firstname"=>"test", "lastname"=>"test", "address_line_2"=>"test", "postal_code"=>"75896"}
}
我该如何配置?我尝试使用forKey但我失败了
编辑
您还可以使用:
[[RKObjectManager sharedManager].mappingProvider registerMapping:customerSerializationMapping withRootKeyPath:@"customer"];