我是网络服务的新手,并且GET工作正常。当我尝试POST时,我发送此JSON字符串:
{"frequency":"None","leader":"test@test.com"}
但是服务器期待这个:
{
"meta":
{"limit": 20, "total_count": 2},
"objects":
[{"frequency": "None", "leader": "jsmith@gmail.com"},
{"frequency": "None", "leader": "jsmith@gmail.com"}]
}
在我的NewMeetingRK对象中,我试图按如下方式映射到“对象”:
mgr.serializationMIMEType = RKMIMETypeJSON;
RKObjectMapping* newmtg = [RKObjectMapping mappingForClass:[NSMutableDictionary class]];
[newmtg mapKeyPath: @"frequency" toAttribute:@"repeat" ];
[newmtg mapKeyPath: @"leader" toAttribute:@"leader" ];
RKObjectMapping* newmtgSerializeMapping = [newmtg inverseMapping];
[mgr.mappingProvider setSerializationMapping:newmtgSerializeMapping forClass:[NewMeetingRK class]];
[mgr.mappingProvider setMapping:newmtgSerializeMapping forKeyPath:@"objects"];
[mgr.router routeClass:[NewMeetingRK class] toResourcePath:@"" forMethod:RKRequestMethodPOST];
这不起作用。我尝试将toResourcePath更改为@“/ objects”,但这也无效。知道如何将值发送到服务器上的第二组JSON值吗?
--- ---- EDIT
@HotLicks指出我错过了阵列 - 谢谢。但是我仍然无法使用JSON值来完成我的简单帖子 我可以用RKClient做一些简单的RKObjectManager吗?
client = [RKClient clientWithBaseURL:[RKURL URLWithBaseURLString:@"https://appzute.appspot.com"]];
NSLog(@"I am your RKClient singleton : %@", [RKClient sharedClient]);
client.requestQueue.showsNetworkActivityIndicatorWhenBusy = YES;
[client setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
NSMutableArray *meetingArray = [NSMutableArray arrayWithCapacity:100];
[meetingArray addObject:[NSMutableDictionary dictionaryWithObjectsAndKeys:
self.leaderEmail.text, @"leader",
self.repeatLabel.text, @"frequency",
nil]];
NSDictionary *jsonDictionary = [NSDictionary dictionaryWithObjectsAndKeys:meetingArray, @"objects", nil];
NSString *jsonString = [jsonDictionary JSONRepresentation];
NSLog (@"jsonString is: %@",jsonString);
[client post:@"/api/meeting/?format=json&username=testuser@test.com&api_key=sdf7asd87fs8df78sdf" params:jsonString delegate:self];
jsonString的值看起来很完美:{“objects”:[{“leader”:“me@me.com”,“frequency”:“None”}]} 问题是params:jsonString无效,因为它需要一个对象而不是一个字符串。但如果我使用params:jsonDictionary,那么我得到这个日志文件: 发送RKRequest:objects [] [leader] = me%40me.com& objects [] [frequency] = None 我restkit.network:RKRequest.m:676状态代码:500
我可能做错了什么?
谢谢!
答案 0 :(得分:0)
不熟悉JSON工具包,但通常你要做的是创建两个词典,每个词对应一个“对象”,将它们放在一个数组中(你的“对象”数组)。然后为您的“元”信息创建一个字典。最后,创建一个包含“meta”信息和“objects”数组的字典。
JSON几乎完美地映射到NSDictionary / NSArray,因此实际上并不需要使用使用“包装器”对象的工具包。