我正在使用以下内容将NSDictionaries数组转换为JSON数据...
创建我的数据...
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);
信息: ( { 艺术家 = 我的艺术家; 标题 = 我的歌; }, { 艺术家 = 我的艺术家; 标题 = 我的歌; } )
事实证明我需要这样做:
要创建我的数据:
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
,然后转换为我发送到服务器的 JSON 字符串,而不仅仅是发送原始NSData
。
感谢大家的帮助!
<?php $array = json_decode($_POST['songs']); ?>
应该可以工作。
你不能这样发送。 NSJSONSerialization适用于iOS使用。 它基本上是一个plist。 您将需要一种方法在PHP上对其进行解码,我怀疑它是否存在。 相反,您需要发送一个 JSON 字符串。 我不确定你所说的"在标题周围留下引号"是什么意思。 他们首先在那里做什么? 你能在这里验证你的原始 JSON 字符串吗?