我试图将一些简单的HTML转换为JSON对象中的字符串值,并且我无法使字符串编码无法转义NSJSONSerialization中的字符串.
示例...我有一个包含一些基本HTML文本的字符串:
NSString *str = @"<html><body><p>Samples / Text</p></body></html>";
Run Code Online (Sandbox Code Playgroud)
期望的结果是JSON,其中HTML为值:
{
"Title":"My Title",
"Instructions":"<html><body><p>Samples / Text</p></body></html>"
}
Run Code Online (Sandbox Code Playgroud)
我正在使用标准技术将NSDictionary转换为包含JSON的NSString:
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject:str forKey:@"Instructions"];
[dict setObject:@"My Title" forKey:@"Title"];
NSError *err;
NSData *data = [NSJSONSerialization dataWithJSONObject:dict options:NSJSONWritingPrettyPrinted error:&err];
NSString *resultingString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"%@", resultingString);
Run Code Online (Sandbox Code Playgroud)
此方法生成的JSON有效,但HTML包含所有正斜杠转义:
{
"Title":"My Title",
"Instructions":"<html><body><p>Samples \/ Text<\/p><\/body><\/html>"
}
Run Code Online (Sandbox Code Playgroud)
这会在JSON字符串指令中创建无效的HTML.
我想坚持使用NSJSONSerialization,因为我们在我们的框架中的其他地方都使用它,并且在切换到非Apple库之前我已经被烧毁了,因为它们得不到支持.我尝试了很多不同的字符串编码,它们都逃脱了尖括号.
显然\ /是JavaScript中对/字符的有效表示,这就是转义正斜杠的原因(即使StackOverflow文本编辑器也将其转义).请参阅: 使用正斜杠转义json字符串? 还有JSON:为什么正斜线逃脱了?.我只是不希望它这样做,似乎没有办法阻止iOS在序列化时转义字符串值中的正斜杠.