读书人

json 序列化有错误怎么办

发布时间: 2013-01-11 11:57:35 作者: rapoo

json 序列化有异常怎么处理
我要写一个公共类,类里面可以序列化json 就是可以到后期调用。。。。就是序列化报错的时候我要怎么处理?还有有没有json 实例化的源码、、、、、、
[解决办法]
如果不是正常的JSON格式,当然要抛出异常

c# 解析JSON的几种办法
[解决办法]
Newtonsoft.Json.Net20.dll 用这个
[解决办法]


/// <summary>
/// JSON反序列化
/// </summary>
public static T JsonDeserialize<T>(string jsonString)
{

//将"yyyy-MM-dd HH:mm:ss"格式的字符串转为"\/Date(1294499956278+0800)\/"格式

string p = @"\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}";

MatchEvaluator matchEvaluator = new MatchEvaluator(ConvertDateStringToJsonDate);

Regex reg = new Regex(p);

jsonString = reg.Replace(jsonString, matchEvaluator);

DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));

using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)))
{
T obj = (T)ser.ReadObject(ms);
return obj;
}
}
/// <summary>
/// 将时间字符串转为Json时间
/// </summary>
private static string ConvertDateStringToJsonDate(Match m)
{

string result = string.Empty;

DateTime dt = DateTime.Parse(m.Groups[0].Value);

dt = dt.ToUniversalTime();

TimeSpan ts = dt - DateTime.Parse("1970-01-01");

result = string.Format("\\/Date({0}+0800)\\/", ts.TotalMilliseconds);

return result;

}


调用 JsonDeserialize<model>(json字符串);


[解决办法]
报错的话 , try catch 加上 。 返回JSON格式的错误信息就行了

读书人网 >asp.net

热点推荐