读书人

C# list 转json 格式有关问题

发布时间: 2013-09-08 15:21:21 作者: rapoo

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
[解决办法]
上面两个方法均可行

读书人网 >C#

热点推荐