objective-c nsjsonserialization

objective c - cómo evitar que NSJSONSerialization agregue escapes adicionales en la URL



objective-c (2)

¿Cómo puedo evitar que NSJSONSialial agregue barras invertidas adicionales a mis cadenas de 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"}

Puedo quitar las barras invertidas y usar esa cadena, pero me gustaría omitir ese paso si es posible ...


Esto funciono para mi

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


Sí, esto es bastante irritante y más aún porque parece que no hay una solución "rápida" para esto (es decir, para NSJSONSerialización)

fuente:
http://www.blogosfera.co.uk/2013/04/nsjsonserialization-serialization-of-a-string-containing-forward-slashes-and-html-is-escaped-incorrectly/
o
La serialización NSJSONSerialization de una cadena que contiene barras inclinadas / y HTML se escapa incorrectamente

(solo tiro en la oscuridad aquí, así que tengan paciencia conmigo)
Si está creando su propio JSON, simplemente cree un objeto NSData a partir de una cadena y envíelo al servidor.
No hay necesidad de ir a través de NSJSONSialización.

Algo como:

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

Sé que no será tan simple pero ... hm ... de todos modos