在 iOS 中,我想在 URL 中发送 JSON 数据以进行服务调用。我尝试截断以下代码,但编码 URL 似乎错误。因为在 JSON 中,key 和 value 之间有一个冒号字符 (:) 和逗号字符 (,) 用于分隔。但是,我无法将冒号(:) 编码为%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
(没有冒号和逗号字符)
我现在所指的在线编码-解码站点。