Подтвердить что ты не робот

Как предотвратить добавление NSJSONSerialization дополнительных экранов в URL-адрес

Как я могу запретить NSJSONSerialization добавлять дополнительные обратные косые черты в строки URL?

NSDictionary *info = @{@"myURL":@"http://www.example.com/test"};
NSData data = [NSJSONSerialization dataWithJSONObject:info options:0 error:NULL];
NSString *string = [[NSString alloc] initWithData:policyData encoding:NSUTF8StringEncoding];
NSLog(@"%@", string);//{"myURL":"http:\/\/www.example.com\/test"}

Я могу удалить обратную косую черту и использовать эту строку, но я бы хотел пропустить этот шаг, если это возможно...

4b9b3361

Ответ 1

Да, это довольно раздражает и тем более, потому что кажется, что нет "быстрого" исправления этого (т.е. для NSJSONSerialization)

Источник:
http://www.blogosfera.co.uk/2013/04/nsjsonserialization-serialization-of-a-string-containing-forward-slashes-and-html-is-escaped-incorrectly/
или
Серийная версия NSJSONSerialization строки, содержащей косые черты вперед/и HTML, выполняется некорректно


(просто стреляйте в темноту, так что несите меня)
Если вы создаете свой собственный JSON, просто сделайте объект NSData из строки и отправьте его на сервер.
Не нужно проходить через NSJSONSerialization.

Что-то вроде:

NSString *strPolicy = [info description];
NSData *policyData = [strPolicy dataUsingEncoding:NSUTF8StringEncoding];

Я знаю, что это будет не так просто, но... hm... anyways

Ответ 2

Это сработало для меня

NSDictionary *policy = ....;
NSData *policyData = [NSJSONSerialization dataWithJSONObject:policy options:kNilOptions error:&error];
if(!policyData && error){
    NSLog(@"Error creating JSON: %@", [error localizedDescription]);
    return;
}

//NSJSONSerialization converts a URL string from http://... to http:\/\/... remove the extra escapes
policyStr = [[NSString alloc] initWithData:policyData encoding:NSUTF8StringEncoding];
policyStr = [policyStr stringByReplacingOccurrencesOfString:@"\\/" withString:@"/"];
policyData = [policyStr dataUsingEncoding:NSUTF8StringEncoding];

Ответ 3

Здесь мой ответ с категорией на AFJSONRequestSerializer, основанный на joel-подходе: fooobar.com/info/249794/...