我在我的项目中成功使用JSON-Framework来解码来自服务器的JSON发送。
现在我需要反过来这样做,因为要发送的数据是从CoreData获取的NSMutableArray,所以我遇到了问题。
使用时
NSString* jsonString = [menuItems JSONRepresentation]
我收到消息“MenuItems不支持JSON序列化”。
我是否需要将NSMutableArray转换为其他格式,以便JSON-Framework可以对其进行序列化?
感谢您的帮助,
米格尔
答案 0 :(得分:4)
请允许我建议一个更好的解决方案:
在您的MenuItems类中,实施-proxyForJson
方法,然后您应该可以直接在-JSONRepresentation
数组上调用menuItems
方法。
@interface MenuItems(SBJson)
-(id)proxyForJson {
return [NSDictionary dictionaryWithObjectsAndKeys:
self.id,@"id",
[self.modified description],@"modified",
nil];
}
@end
希望这有帮助!
答案 1 :(得分:1)
我终于解决了它,但我不确定它是否是最佳/最优雅的方式。
NSMutableArray* items = [[NSMutableArray alloc] init];
for (MenuItems* item in menuItems) {
[items addObject:[NSArray arrayWithObjects:item.id,[item.modified description],nil]];
}
NSString *post = [NSString stringWithFormat:@"currentData=%@",
[items JSONRepresentation]];
说明:
我首先想到的问题是NSMutableArray,但后来意识到它是它的内容。所以我只是从中得到了我需要的信息并将其保存为NSArray,JSON-Framework接受了: - )
答案 2 :(得分:0)
这是一个向服务器发送字典和数组的示例。这对我来说是1000000%。
SBJSON *jparser = [[SBJSON new] autorelease];
NSString *ArrayjsonItems = [jparser stringWithObject:self.UrMergedArray];
NSString *DicjsonItems = [jparser stringWithObject:self.UrMergedDic];
NSLog(@"array Items :%@",self.UrMergedArray);
NSLog(@"dic Items :%@",self.UrMergedDic);
NSString *postString =[NSString stringWithFormat:@"Arrayitems=%@&Dicitems=%@",ArrayjsonItems,DicjsonItems];
NSLog(@"it is going to post : %@ \n\n",postString);
NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:snapURL];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:[postString dataUsingEncoding:NSUTF8StringEncoding]];
NSURLConnection *connection=[[NSURLConnection alloc]
initWithRequest:request
delegate:self];
if (connection) {
self.receivedData = [[NSMutableData alloc]init];
}