我有一个NSDictionary
(params),它包含以下数据:
{
deviceType = iPhone;
ordersActionList = ({
endDate = "07/14/2014 14:32";
orderId = 2807171;
reason = "Some reason";
}
);
}
当我使用NSJSONSerialization
解析上面的内容时
NSError *err;
NSData *jsonData =[NSJSONSerialization dataWithJSONObject:params options:0 error:&err];
它将转义字符添加到endDate中,endDate如下所示:
`"endDate": "07\/14\/2014 14:32"`
这是不正确的,有人能建议我在使用NSJSONSerialization
序列化时如何避免JSON中的转义字符
编辑:这是我目前的工作,但我不喜欢这样做,我希望有一个更好的解决方案:
-(NSData*) converToNSData:(NSDictionary *)params
{
NSError * err;
NSData *jsonData =[NSJSONSerialization dataWithJSONObject:params options:0 error:&err];
NSString *jsonStr1 = [NSString stringWithUTF8String:[jsonData bytes]];
jsonStr1 = [jsonStr1 stringByReplacingOccurrencesOfString:@"\\/" withString:@"/"];
NSData *jsonData2 =[jsonStr1 dataUsingEncoding:NSUTF8StringEncoding];
return jsonData2;
}
发布于 2014-07-14 23:49:57
您可以这样做,但是如果您的数据有两个反斜杠,它们将被删除。如果您可以保证您的数据没有两个反斜杠,这是可以的。
NSString *newString = [[yourDict objectForKey:@"endDate"]
stringByReplacingOccurrencesOfString:@"\\" withString:@""];
发布于 2014-07-14 23:52:13
如果您说的是避免在约会中转义斜杠,那么NSJSONSerialization无法做到这一点。但是,请注意,生成的JSON数据是完全有效的,如果反序列化它,您将得到原始数据。
如果仍然希望删除反斜杠,则必须将结果转换为NSString,并执行搜索/替换操作。
相关:how to prevent NSJSONSerialization from adding extra escapes in URL
发布于 2017-09-14 08:57:15
var returnString:String?
do
{
let jsonData = try JSONSerialization.data(withJSONObject: dict, options: JSONSerialization.WritingOptions.prettyPrinted)
if let json = String(data: jsonData, encoding: .utf8) {
returnString=json.replacingOccurrences(of: "\\", with: "")
}
}
catch {
print("something went wrong with parsing json")
}
https://stackoverflow.com/questions/24747694
复制相似问题