我正在尝试将一些简单的HTML转换为JSON对象中的字符串值,并且在获取字符串编码以免在NSJSONSerialization中转义字符串时遇到了麻烦。
示例…我有一个包含一些基本HTML文本的字符串:
NSString *str = @"
Samples / Text
";期望的结果是将HTML作为值的JSON:
{
"Title":"My Title",
"Instructions":"
Samples / Text
"}
我正在使用标准技术将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);
此方法生成的JSON是有效的,但是HTML的所有正斜杠均已转义:
{
"Title":"My Title",
"Instructions":"
Samples \/ Text"
}
这将在指令JSON字符串中创建无效的HTML。
我想坚持使用NSJSONSerialization,因为我们在框架中的其他地方都使用了NSJSONSerialization,在被取消支持之前,我在切换到非Apple库之前已经被烧死了。我尝试了许多不同的字符串编码,并且所有这些编码都避开了尖括号。
显然,\
/是JavaScript中/字符的有效表示形式,这就是为什么正斜杠被转义的原因(甚至是StackOverflow文本编辑器也对其进行了转义)。请参阅:使用正斜杠转义json字符串?
以及JSON:为什么正斜杠转义了?。我只是不希望它这样做,而且似乎没有一种方法可以阻止iOS在序列化时转义字符串值中的正斜杠。