iOSでJSONデータをURLで送信してサービスを呼び出したい。次のコードを抜粋してみましたが、エンコードされた URL が間違っているようです。JSON では、キーと値の間にコロン文字 (:) と、区切り用のコンマ文字 (,) があるためです。しかし、コロン (:) を%3Aとしてエンコードし、カンマ (,) を%2Cとしてエンコードすることはできません
コードスニペット:
- (NSURL *)getEncodedUrl {
// Build dictionnary with parameters
NSString *abc = @"abc";
NSNumber *limitNumber = [NSNumber numberWithInt:2];
NSMutableDictionary *dictionnary = [NSMutableDictionary dictionary];
[dictionnary setObject:limitNumber forKey:@"limit"];
[dictionnary setObject:abc forKey:@"abc"];
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dictionnary options:0 error:&error];
if (!jsonData) {
debug("Json error %@",error);
return nil;
} else {
NSString *JSONString = [[NSString alloc] initWithBytes:[jsonData bytes] length:[jsonData length] encoding:NSUTF8StringEncoding];
debug("Json op %@",JSONString);
NSString* params = [JSONString stringByAddingPercentEscapesUsingEncoding:
NSASCIIStringEncoding];
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://baseUrl.com?param=@",params]];
debug("URL = %@",url);
return url;
}
}
出力:~
URL = http://baseUrl.com?param=%7B%22abc%22:%22abc%22,%22limit%22:2%7D
(コロンとコンマを含む)
しかし、次のo / pが必要です:
http://baseUrl.com?param=%7B%22abc%22%3A%22abc%22%2C%22limit%22%3A2%7D
(コロンとカンマは使用できません)
現在私が参照しているオンライン エンコード/デコード サイト。