NSJSONSerialization 将日期分隔符从 yyyy/MM/dd 更改为 yyyy\/MM\/dd [重复]
Posted
技术标签:
【中文标题】NSJSONSerialization 将日期分隔符从 yyyy/MM/dd 更改为 yyyy\\/MM\\/dd [重复]【英文标题】:NSJSONSerialization is changing the date separator from yyyy/MM/dd to yyyy\/MM\/dd [duplicate]NSJSONSerialization 将日期分隔符从 yyyy/MM/dd 更改为 yyyy\/MM\/dd [重复] 【发布时间】:2016-09-30 07:03:14 【问题描述】:NSString *date = [userDefaults objectForKey:KEY_FORM7_DECLARATION_DATE];
NSMutableDictionary *dictionary = [[NSMutableDictionary alloc]initWithObjectsAndKeys:date, @"DATE",nil]
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dictionary options:0 error:&error];
NSString *result = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
当我做NSLog(@"%@", date)
时,它显示了我2016/10/30
但是当我尝试打印NSLog(@"%@", result)
时,日期更改为2016\/10\/30
。任何帮助将不胜感激。
【问题讨论】:
@Paulw11 我什至尝试将 json 写入文本文件,但显示相同。 你能告诉我 [userDefaults objectForKey:KEY_FORM7_DECLARATION_DATE] 的值是多少 它是日期的字符串格式,即“2016/10/10”@himanth 试试这样 NSString *date = [userDefaults objectForKey:KEY_FORM7_DECLARATION_DATE]; NSString *main = [NSString stringWithFormat:@"\"DATE\":\"%@\"",date]; NSData *mainData = [main dataUsingEncoding:NSUTF8StringEncoding]; NSLog(@"%@",[[NSString alloc]initWithData:mainData 编码:NSUTF8StringEncoding]); 你试过了吗? 【参考方案1】:似乎这是NSJSONSerialization
的预期行为:similar question
对于您的简单情况,我只能提出简单的解决方法:使用替换符号序列化 JSON,然后使用序列化字符串作为格式:
let dateString = "2016/10/30"
var dict = ["DATE": "%@"]
do
let data = try NSJSONSerialization.dataWithJSONObject(dict, options: NSJSONWritingOptions(rawValue: 0))
let format = String(data: data, encoding: NSUTF8StringEncoding)!
let result = String(format: format, dateString)
catch
print(error)
【讨论】:
以上是关于NSJSONSerialization 将日期分隔符从 yyyy/MM/dd 更改为 yyyy\/MM\/dd [重复]的主要内容,如果未能解决你的问题,请参考以下文章
在sql server中使用分隔符将没有分隔符的日期和时间转换为日期时间
为啥 NSJSONSerialization 将 NSDictionary 错误地解析为 JSON?
使用 NSJSONSerialization 将 NSMutableDictionary 转换为 JSON 会返回不同的结果