转载自——Json.net动态序列化以及对时间格式的处理

本文介绍使用Json.NET进行动态序列化的方法,通过自定义序列化器仅序列化指定属性,并解决日期格式显示问题。适用于需要精确控制JSON输出场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于我工作中对Json处理的东西

第一:动态序列化类  

第二:时间格式处理

通常我们一个类里 可能有十到更多的属性,但是我们序列化通常只需要序列化其中的 三到五个这样的话就会有多余的数据

 

 

 

如果 我只想序列化   id 跟name如何处理

这是我找的网上的方法:

using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Serialization;
using System;
using System.Collections.Generic;
using System.Linq;

namespace CYP.New.WCF.Common.Common
{
    public class LimitPropsContractResolver : DefaultContractResolver
    {
        private string[] props = null;

        public LimitPropsContractResolver(string[] props)
        {
            this.props = props;
        }

        protected override IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization)
        {
            IList<JsonProperty> list = base.CreateProperties(type, memberSerialization);

            //只保留清單有列出的屬性
            return list.Where(p => props.Contains(p.PropertyName)).ToList();
        }
    }
}

 

 

 

 

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

关于Json.net 处理日期格式      看第一张图就知道  Json.net 处理日期格式 这尼玛根本就不是正常人类能看的懂得

 

你可能会发现Json.net 里有关于处理日期的东西

 

 

 

但是这个时候你就会发现   再Json.net的重载里边

        public static string SerializeObject(object value);
        public static string SerializeObject(object value, Formatting formatting);
        public static string SerializeObject(object value, JsonSerializerSettings settings);
        public static string SerializeObject(object value, params JsonConverter[] converters);
        public static string SerializeObject(object value, Formatting formatting, JsonSerializerSettings settings);
        public static string SerializeObject(object value, Formatting formatting, params JsonConverter[] converters);

你会发现   动态序列化 跟  时间处理的格式不能共存    这个问题 着实让我小小的蛋疼了一把.....

解决方案:

using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Serialization;
using System;
using System.Collections.Generic;
using System.Linq;

namespace CYP.New.WCF.Common.Common
{
    public class LimitPropsContractResolver : DefaultContractResolver
    {
        private string[] props = null;

        public LimitPropsContractResolver(string[] props)
        {
            this.props = props;
        }

        protected override IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization)
        {
            IList<JsonProperty> list = base.CreateProperties(type, memberSerialization);
            IsoDateTimeConverter iso = new IsoDateTimeConverter() { DateTimeFormat = "yyyy-MM-dd HH:mm:ss" };
            IList<JsonProperty> listWithConver = new List<JsonProperty>();
            foreach (var item in list)
            {
                if (props.Contains(item.PropertyName))
                {
                    if (item.PropertyType.ToString().Contains("System.DateTime"))
                    {
                        item.Converter = iso;
                    }
                    listWithConver.Add(item);
                }
            }
            return listWithConver;
        }
    }
}
 

 

 

一些关于Json.net的处理  

本着对大家有帮助的态度    

关于Josn.net的下载地址 http://www.codeplex.com/    

 

 

转载自:http://www.cnblogs.com/yesehuaqingqian/p/3934532.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值