转换NSArray – > JSON – > NSData – > PHP服务器 – > JSON表示

我正在将NSDictionaries数组转换为JSON数据与以下…

创build我的数据…

NSMutableArray *arrayOfDicts = [[NSMutableArray alloc] init]; for (int i = 0; i < 2; i++) { NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys: @"MySong", @"title", @"MyArtist", @"artist", nil]; [arrayOfDicts addObject:dict]; } NSArray *info = [NSArray arrayWithArray:arrayOfDicts]; NSData* jsonData = [NSJSONSerialization dataWithJSONObject:info options:NSJSONWritingPrettyPrinted error:&error]; 

然后发送像这样…

 NSURL *url = [NSURL URLWithString:@"http://www.mywebsite.com/index.php"]; ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url]; [request setPostValue:jsonData forKey:@"songs"]; [request setDelegate:self]; request.tag = TAG_LOAD_SONGS; [request startAsynchronous]; 

这是发送NSData到我的服务器,但我怎么才能在PHP中使用它…它真的只是一堆随机数,如果我从我的服务器打印它,我已经尝试使用json_encode,但我不认为这是为了原始数据…

任何帮助将是伟大的!

编辑:这是PHP的响应…

 echo $_POST['songs']; <5b0a2020 7b0a2020 20202274 69746c65 22203a20 224d7953 6f6e6722 2c0a2020 20202261 72746973 7422203a 20224d79 41727469 7374220a 20207d2c 0a20207b 0a202020 20227469 746c6522 203a2022 4d79536f 6e67222c 0a202020 20226172 74697374 22203a20 224d7941 72746973 74220a20 207d0a5d> 

这里是Xcode的NSLoging的响应…

 NSLog(@"Info: %@", info); 

信息:({artist = MyArtist; title = MySong;},{artist = MyArtist; title = MySong;})

原来我需要这样做:

创build我的数据:

 NSMutableArray *arrayOfDicts = [[NSMutableArray alloc] init]; for (int i = 0; i < 2; i++) { NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys: @"MySong", @"title", @"MyArtist", @"artist", nil]; [arrayOfDicts addObject:dict]; } NSArray *info = [NSArray arrayWithArray:arrayOfDicts]; 

并发送它像这样:

 NSData *jsonData = [NSJSONSerialization dataWithJSONObject:info options:NSJSONWritingPrettyPrinted error:&error]; NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; // Start request NSURL *url = [NSURL URLWithString:@"http://www.mywebsite.com/index.php"]; ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url]; [request setPostValue:jsonString forKey:@"songs"]; [request setDelegate:self]; [request startAsynchronous]; 

关键是将信息转换为NSData ,然后转换为我发送到我的服务器的JSONstring,而不仅仅是发送原始的NSData

感谢大家的帮助!

<?php $array = json_decode($_POST['songs']); ?> <?php $array = json_decode($_POST['songs']); ?>应该工作。

你不能这样发送。 NSJSONSerialization是iOS的使用。 它基本上是一个plist。 您将需要一种方法来解码它在PHP上,我怀疑它存在。 相反,你需要发送一个JSONstring。 我不确定你的意思是“引用标题”。 他们在那里做什么呢? 你能在这里validation你的原始JSONstring吗?