JsonConvert序列化时自定义日期格式和忽略循环引用

2 篇文章 0 订阅
JsonSerializerSettings jsSettings = new JsonSerializerSettings();
            jsSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
            jsSettings.Converters.Add(new IsoDateTimeConverter
            {
                DateTimeFormat = "yyyy'-'MM'-'dd' 'HH':'mm':'ss"
            });
            string result2 = JsonConvert.SerializeObject(jsonc,jsSettings);
您可以使用JsonConvert类中的SerializeObject方法来序列化.NET对象,并通过JsonSerializerSettings类来设置自定义格式。 以下是一个示例代码,将DateTime类型的序列化自定义格式: ```csharp using Newtonsoft.Json; using System; public class CustomDateTimeConverter : JsonConverter<DateTime> { private const string DateFormat = "yyyy-MM-dd HH:mm:ss"; public override void WriteJson(JsonWriter writer, DateTime value, JsonSerializer serializer) { writer.WriteValue(value.ToString(DateFormat)); } public override DateTime ReadJson(JsonReader reader, Type objectType, DateTime existingValue, bool hasExistingValue, JsonSerializer serializer) { if (DateTime.TryParse(reader.Value.ToString(), out DateTime result)) { return result; } return existingValue; } } public class MyClass { [JsonConverter(typeof(CustomDateTimeConverter))] public DateTime MyDateTime { get; set; } } public class Program { public static void Main() { var obj = new MyClass { MyDateTime = DateTime.Now }; var settings = new JsonSerializerSettings { DateFormatString = "yyyy-MM-dd HH:mm:ss" }; var json = JsonConvert.SerializeObject(obj, settings); Console.WriteLine(json); var deserializedObj = JsonConvert.DeserializeObject<MyClass>(json); Console.WriteLine(deserializedObj.MyDateTime); } } ``` 在上面的示例中,我们首先创建了一个自定义JsonConverter类CustomDateTimeConverter,用于将DateTime类型的序列化为指定的格式。接着,在MyClass类中使用了JsonConverter特性来应用这个自定义的转换器。 在Main方法中,我们创建了一个MyClass对象,并通过JsonConvert.SerializeObject方法将其序列化JSON字符串。同,我们还使用了JsonSerializerSettings来设置日期格式为"yyyy-MM-dd HH:mm:ss"。然后,我们输出了序列化后的JSON字符串。 接着,我们使用JsonConvert.DeserializeObject方法将JSON字符串反序列化为MyClass对象,并输出反序列化后的DateTime属性。 请注意,上述示例使用了Newtonsoft.Json库,您需要在项目中安装该库才能使用相关的类和方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值