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

Eri*_*ric 12 php json objective-c ios asiformdatarequest

我正在使用以下内容将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];
Run Code Online (Sandbox Code Playgroud)

然后像这样发送......

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];
Run Code Online (Sandbox Code Playgroud)

这是将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>
Run Code Online (Sandbox Code Playgroud)

以下是对Xcode中的NSLoging的响应......

NSLog(@"Info: %@", info);
Run Code Online (Sandbox Code Playgroud)

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

Eri*_*ric 20

事实证明我需要这样做:

要创建我的数据:

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];
Run Code Online (Sandbox Code Playgroud)

并发送它像这样:

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];
Run Code Online (Sandbox Code Playgroud)

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

谢谢大家的帮助!