使用JsonConvert.SerializeObject压缩JSON时日期被修改,如何解决?
解决JSON去缩进且不修改内容的问题
你的问题核心是反序列化时日期字符串被自动转换为DateTime对象,导致序列化后日期偏移变化。要只调整格式不改动内容,有两种可靠方法:
方法一:使用JToken直接处理
JToken会保留JSON的原始结构和值,不会自动解析日期为DateTime类型,直接调用ToString时指定无缩进即可:
var token = JToken.Parse(content); var freeContent = token.ToString(Formatting.None);
方法二:配置JsonSerializerSettings禁用日期解析
通过设置DateParseHandling.None避免将日期字符串转为DateTime,同时指定Formatting.None去除缩进:
var settings = new JsonSerializerSettings { DateParseHandling = DateParseHandling.None, Formatting = Formatting.None }; var freeContent = JsonConvert.SerializeObject(JsonConvert.DeserializeObject(content, settings), settings);
这两种方法都能保证只去除JSON的缩进,完全保留原始的日期字符串和其他内容。
内容的提问来源于stack exchange,提问作者Midlo215
相关产品推荐
相关产品推荐

