4

我在我的项目中成功使用 JSON-Framework 来解码从服务器发送的 JSON。

现在我需要以相反的方式进行操作,但我遇到了问题,因为要发送的数据是从 CoreData 获取的 NSMutableArray。

使用时

NSString* jsonString = [menuItems JSONRepresentation]

我收到消息“MenuItems 不支持 JSON 序列化”。

我是否需要将 NSMutableArray 转换为其他格式,以便 JSON-Framework 可以对其进行序列化?

感谢您的帮助,
米格尔

4

3 回答 3

4

请允许我提出一个更好的解决方案:

在您的 MenuItems 类中,实现该-proxyForJson方法,然后您应该能够-JSONRepresentation直接在menuItems数组上调用该方法。

@interface MenuItems(SBJson)
-(id)proxyForJson {
    return [NSDictionary dictionaryWithObjectsAndKeys:
            self.id,@"id",
            [self.modified description],@"modified",
            nil];
}
@end

希望这可以帮助!

于 2010-09-21T20:52:57.377 回答
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 上,后来才意识到是它的内容。所以我只是从中获取我需要的信息并将其保存为 JSON-Framework 接受的 NSArray :-)

于 2010-07-14T11:09:48.083 回答
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];

}
于 2011-07-18T16:50:17.353 回答