首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C# list 转json 格式有关问题

2013-09-08 
C# list 转json 格式问题C# list 转json 使用了一下方法public static string Obj2JsonT(T data){try{Sy

C# list 转json 格式问题
  C# list 转json 使用了一下方法
public static string Obj2Json<T>(T data)
        {
            try
            {
                System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(data.GetType());
                using (MemoryStream ms = new MemoryStream())
                {
                    serializer.WriteObject(ms, data);
                    return Encoding.UTF8.GetString(ms.ToArray());
                }
            }
            catch
            {
                return null;
            }
        }
结果转换出来的json {"Address":null,"City":null,"CompanyAbbreviate":null,"CompanyName":"Kingnob","ConCountry":"","ConProduct":"","Contact":"Fifi","Country":"中国","CreateTime":"\/Date(1346058617643+0800)\/","Credits":80,"Email":null,"Fax":null,"Guid":"5310880e-c87b-4f53-b634-00018a1d059d",

怎样将null 变成“”,还有数字的变成字符“12”、时间变成“年月日”这样 。。有没有用过上面的方法进行过转化的???帮帮忙了。
[解决办法]
帮助文档里面一般有关于Datetime这种特殊类型的转换方法,不过我一般把时间保存为string,在使用的时候datetime.parse()进行转换
--------------------------------
如果你使用的是Newtonsoft.Json.dll,关于时间的转换如下:using Newtonsoft.Json和Newtonsoft.Json.Converters

        class obj 


        {
            public DateTime dt = DateTime.Now;
            public string str = null;
        }
            obj oo=new obj();
            IsoDateTimeConverter dc = new IsoDateTimeConverter();
            dc.DateTimeFormat = "yyyy年MM月dd日 HH时mm分ss秒";//格式化时间
            JsonSerializerSettings jss = new JsonSerializerSettings();
            jss.NullValueHandling = NullValueHandling.Ignore;//忽略null值的属性
            jss.Converters.Add(dc);
            string isoJson = JsonConvert.SerializeObject(oo,Formatting.None,jss);

            Console.WriteLine(isoJson);
            obj oo=new obj();
            IsoDateTimeConverter dc = new IsoDateTimeConverter();
            dc.DateTimeFormat = "yyyy年MM月dd日 HH时mm分ss秒";
            JsonSerializerSettings jss = new JsonSerializerSettings();
            jss.
            string isoJson = JsonConvert.SerializeObject(oo, dc);

            Console.WriteLine(isoJson)



输出结果:{"dt":"2012年09月17日 20时52分37秒"}
[解决办法]
方法1. 要么在序列化前,你自己遍历list转换一下
方法2. 改用 Json.Net 加入一些自定义的Converter
[解决办法]
上面两个方法均可行

热点排行