我有一个发送和接受JSON的Web服务,并通过HTML编码处理所有特殊字符。我可以使用以下内容完美地解析和阅读Web服务数据(为简洁起见,删除了错误检查):
cleanJsonString = [self stringByDecodingXMLEntities:jsonString];
NSDictionary *JSON = [NSJSONSerialization JSONObjectWithData: [cleanJsonString dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES]
options: NSJSONReadingMutableContainers
error: &parseError];
当我需要序列化用户输入以将数据发送回服务器时,问题就出现了。我目前正在使用以下内容:
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:myDictionaryObject
options:NSJSONWritingPrettyPrinted
error:&parseError];
NSString *myString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
问题在于,这不包括任何特殊字符。客户端没有发生错误,但Web服务正在接收错误数据。我知道我可以通过递归字典对象并在序列化之前编码每个字符串来强制它。但是对整个JSON字符串执行一次单独的编码操作而不破坏它是否安全?或者,更理想的是,是否有这样的参数可以在序列化过程中处理编码。任何建议或建议都非常感谢。