12

次のようにして、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);

情報: ( { アーティスト = MyArtist; タイトル = MySong; }, { アーティスト = MyArtist; タイトル = MySong; } )

4

3 に答える 3

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];

そして、次のように送信しました。

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

助けてくれてありがとう!

于 2012-04-25T20:53:02.573 に答える
1

このままでは送れません。NSJSONSerialization は iOS 用です。基本的にはplistです。PHPでデコードする方法が必要になりますが、存在するとは思えません。代わりに、JSON 文字列を送信する必要があります。「タイトルの周りに引用符を残す」の意味がわかりません。そもそも彼らはそこで何をしているのですか?ここで元の JSON 文字列を確認できますか?

于 2012-04-24T03:43:36.270 に答える
1

<?php $array = json_decode($_POST['songs']); ?>動作するはずです。

于 2012-04-24T01:55:06.730 に答える