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