C#将任意对象快速转换为Json
由于最近项⽬⾥⾯Model类特别多,⽽我需要编写所有数据交互的接⼝,传输的格式是json,以前都是通过循环List<T>中的对象向StringBuilder对象中Apped字符串⽣成json,⽽这样⼀来这次项⽬岂不是得写死⼈,想了想不能冒这个风险,因此觉得写⼀个通⽤的Model 转json的⽅法如下:
///<summary>
///转换T为json
///</summary>
///<typeparam name="T">类型</typeparam>
///<param name="model">对象</param>
///<returns>json</returns>
private string ConvertToJson<T>(T model)
{
//获取属性集合
PropertyInfo[] properties = model.GetType().GetProperties();
StringBuilder sb = new StringBuilder();
sb.Append("{");
  //遍历属性集合
json转换对象for (int i = 0, len = properties.Length; i < len; i++)
{
    if(0!=i)sb.Append(",");
sb.AppendFormat("\"{0}\":\"{1}\"",
properties[i].Name.ToLower(),//属性名作为键
properties[i].GetValue(model, null).ToString());//属性值作为值
}
sb.Append("}");
return sb.ToString();
}
通过泛型可以接收任意⾃定义类型进⾏操作;
完成了这个之后突然我⼜发现还是要循环很多List<T>,也很⿇烦,所以⼲脆再重载⼀下,既可以直接转Model,也可以直接转List<Model>岂不是更加⽅便,于是(此处是完整代码):
///<summary>
///转换List<T>为json
///</summary>
///<typeparam name="T"></typeparam>
///<param name="models"></param>
///<returns></returns>
private string ConvertToJson<T>(List<T> models)
{
StringBuilder sb = new StringBuilder();
for (int i = 0, len = models.Count; i < len; i++)
{
if (0 != i)
sb.Append(",");
sb.Append(ConvertToJson(models[i]));
}
return sb.ToString();
}
///<summary>
///转换T为json
///</summary>
///<typeparam name="T"></typeparam>
///<param name="model"></param>
///<returns></returns>
private string ConvertToJson<T>(T model)
{
//获取属性集合
PropertyInfo[] properties = model.GetType().GetProperties();
StringBuilder sb = new StringBuilder();
sb.Append("{");//遍历属性集合
for (int i = 0, len = properties.Length; i < len; i++)
{
    if(0!=i)sb.Append(",");
sb.AppendFormat("\"{0}\":\"{1}\"",
properties[i].Name.ToLower(),//属性名作为键
properties[i].GetValue(model, null).ToString());//属性值作为值
}
sb.Append("}");
return sb.ToString();
}
⾄此完毕,代码中组织json格式效率⽅⾯还望有⼤神提出宝贵建议!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。