当前位置:  编程技术>.net/c#/asp.net

C#实现任意数据类型转成json格式输出

    来源: 互联网  发布时间:2014-10-23

    本文导语:  直接贴代码: 代码如下:/// List转成json   ///   ///   ///   ///   ///   public static string ListToJson(IList list, string jsonName)  {   StringBuilder Json = new StringBuilder();   if (string.IsNullOrEmpty(jsonName))    jsonName = list[0].GetType().Name;   Json.Append(...

直接贴代码:
代码如下:

/// List转成json  
///  
///  
///  
///  
///  
public static string ListToJson(IList list, string jsonName) 

 StringBuilder Json = new StringBuilder(); 
 if (string.IsNullOrEmpty(jsonName)) 
  jsonName = list[0].GetType().Name; 
 Json.Append("{/"" + jsonName + "/":["); 
 if (list.Count > 0) 
 { 
  for (int i = 0; i < list.Count; i++) 
  { 
   T obj = Activator.CreateInstance(); 
   PropertyInfo[] pi = obj.GetType().GetProperties(); 
   Json.Append("{"); 
   for (int j = 0; j < pi.Length; j++) 
   { 
    Type type = pi[j].GetValue(list[i], null).GetType(); 
    Json.Append("/"" + pi[j].Name.ToString() + "/":" + StringFormat(pi[j].GetValue(list[i], null).ToString(), type)); 

    if (j < pi.Length - 1) 
    { 
     Json.Append(","); 
    } 
   } 
   Json.Append("}"); 
   if (i < list.Count - 1) 
   { 
    Json.Append(","); 
   } 
  } 
 } 
 Json.Append("]}"); 
 return Json.ToString(); 


///  
/// List转成json  
///  
///  
///  
///  
public static string ListToJson(IList list) 

 object obj = list[0]; 
 return ListToJson(list, obj.GetType().Name); 


///   
/// 对象转换为Json字符串  
///   
/// 对象  
/// Json字符串  
public static string ToJson(object jsonObject) 

 string jsonString = "{"; 
 PropertyInfo[] propertyInfo = jsonObject.GetType().GetProperties(); 
 for (int i = 0; i < propertyInfo.Length; i++) 
 { 
  object objectValue = propertyInfo[i].GetGetMethod().Invoke(jsonObject, null); 
  string value = string.Empty; 
  if (objectValue is DateTime || objectValue is Guid || objectValue is TimeSpan) 
  { 
   value = "'" + objectValue.ToString() + "'"; 
  } 
  else if (objectValue is string) 
  { 
   value = "'" + ToJson(objectValue.ToString()) + "'"; 
  } 
  else if (objectValue is IEnumerable) 
  { 
   value = ToJson((IEnumerable)objectValue); 
  } 
  else
  { 
   value = ToJson(objectValue.ToString()); 
  } 
  jsonString += "/"" + ToJson(propertyInfo[i].Name) + "/":" + value + ","; 
 } 
 jsonString.Remove(jsonString.Length - 1, jsonString.Length); 
 return jsonString + "}"; 


///   
/// 对象集合转换Json  
///   
/// 集合对象  
/// Json字符串  
public static string ToJson(IEnumerable array) 

 string jsonString = "["; 
 foreach (object item in array) 
 { 
  jsonString += ToJson(item) + ","; 
 } 
 jsonString.Remove(jsonString.Length - 1, jsonString.Length); 
 return jsonString + "]"; 


///   
/// 普通集合转换Json  
///   
/// 集合对象  
/// Json字符串  
public static string ToArrayString(IEnumerable array) 

 string jsonString = "["; 
 foreach (object item in array) 
 { 
  jsonString = ToJson(item.ToString()) + ","; 
 } 
 jsonString.Remove(jsonString.Length - 1, jsonString.Length); 
 return jsonString + "]"; 


///   
/// Datatable转换为Json  
///   
/// Datatable对象  
/// Json字符串  
public static string ToJson(DataTable dt) 

 StringBuilder jsonString = new StringBuilder(); 
 jsonString.Append("["); 
 DataRowCollection drc = dt.Rows; 
 for (int i = 0; i < drc.Count; i++) 
 { 
  jsonString.Append("{"); 
  for (int j = 0; j < dt.Columns.Count; j++) 
  { 
   string strKey = dt.Columns[j].ColumnName; 
   string strValue = drc[i][j].ToString(); 
   Type type = dt.Columns[j].DataType; 
   jsonString.Append("/"" + strKey + "/":"); 
   strValue = StringFormat(strValue, type); 
   if (j < dt.Columns.Count - 1) 
   { 
    jsonString.Append(strValue + ","); 
   } 
   else
   { 
    jsonString.Append(strValue); 
   } 
  } 
  jsonString.Append("},"); 
 } 
 jsonString.Remove(jsonString.Length - 1, 1); 
 jsonString.Append("]"); 
 return jsonString.ToString(); 


///  
/// DataTable转成Json  
///  
///  
///  
///  
public static string ToJson(DataTable dt, string jsonName) 

 StringBuilder Json = new StringBuilder(); 
 if (string.IsNullOrEmpty(jsonName)) 
  jsonName = dt.TableName; 
 Json.Append("{/"" + jsonName + "/":["); 
 if (dt.Rows.Count > 0) 
 { 
  for (int i = 0; i < dt.Rows.Count; i++) 
  { 
   Json.Append("{"); 
   for (int j = 0; j < dt.Columns.Count; j++) 
   { 
    Type type = dt.Rows[i][j].GetType(); 
    Json.Append("/"" + dt.Columns[j].ColumnName.ToString() + "/":" + StringFormat(dt.Rows[i][j].ToString(), type)); 
    if (j < dt.Columns.Count - 1) 
    { 
     Json.Append(","); 
    } 
   } 
   Json.Append("}"); 
   if (i < dt.Rows.Count - 1) 
   { 
    Json.Append(","); 
   } 
  } 
 } 
 Json.Append("]}"); 
 return Json.ToString(); 


///   
/// DataReader转换为Json  
///   
/// DataReader对象  
/// Json字符串  
public static string ToJson(DbDataReader dataReader) 

 StringBuilder jsonString = new StringBuilder(); 
 jsonString.Append("["); 
 while (dataReader.Read()) 
 { 
  jsonString.Append("{"); 
  for (int i = 0; i < dataReader.FieldCount; i++) 
  { 
   Type type = dataReader.GetFieldType(i); 
   string strKey = dataReader.GetName(i); 
   string strValue = dataReader[i].ToString(); 
   jsonString.Append("/"" + strKey + "/":"); 
   strValue = StringFormat(strValue, type); 
   if (i < dataReader.FieldCount - 1) 
   { 
    jsonString.Append(strValue + ","); 
   } 
   else
   { 
    jsonString.Append(strValue); 
   } 
  } 
  jsonString.Append("},"); 
 } 
 dataReader.Close(); 
 jsonString.Remove(jsonString.Length - 1, 1); 
 jsonString.Append("]"); 
 return jsonString.ToString(); 


///   
/// DataSet转换为Json  
///   
/// DataSet对象  
/// Json字符串  
public static string ToJson(DataSet dataSet) 

 string jsonString = "{"; 
 foreach (DataTable table in dataSet.Tables) 
 { 
  jsonString += "/"" + table.TableName + "/":" + ToJson(table) + ","; 
 } 
 jsonString = jsonString.TrimEnd(','); 
 return jsonString + "}"; 


///  
/// 过滤特殊字符 
///  
///  
///  
private static string String2Json(String s) 

 StringBuilder sb = new StringBuilder(); 
 for (int i = 0; i < s.Length; i++) 
 { 
  char c = s.ToCharArray()[i]; 
  switch (c) 
  { 
   case '/"': 
    sb.Append("///""); break; 
   case '//': 
    sb.Append("////"); break; 
   case '/': 
    sb.Append("///"); break; 
   case '/b': 
    sb.Append("//b"); break; 
   case '/f': 
    sb.Append("//f"); break; 
   case '/n': 
    sb.Append("//n"); break; 
   case '/r': 
    sb.Append("//r"); break; 
   case '/t': 
    sb.Append("//t"); break; 
   default: 
    sb.Append(c); break; 
  } 
 } 
 return sb.ToString(); 


///  
/// 格式化字符型、日期型、布尔型 
///  
///  
///  
///  
private static string StringFormat(string str, Type type) 

 if (type == typeof(string)) 
 { 
  str = String2Json(str); 
  str = "/"" + str + "/""; 
 } 
 else if (type == typeof(DateTime)) 
 { 
  str = "/"" + str + "/""; 
 } 
 else if (type == typeof(bool)) 
 { 
  str = str.ToLower(); 
 } 
 return str; 
}

    
 
 

您可能感兴趣的文章:

  • c#通过委托delegate与Dictionary实现action选择器代码举例
  • C#实现获取枚举中元素个数的方法
  • C#实现自定义双击事件
  • C#键盘输入回车键实现点击按钮效果的方法
  • C#实现获取一年中是第几个星期的方法
  • C#实现Datatable排序的方法
  • C#实现装箱与拆箱操作简单实例
  • 解决C#中WebBrowser的DocumentCompleted事件不执行的实现方法
  • C#下实现创建和删除目录的实例代码
  • 使用C#实现在屏幕上画图效果的代码实例
  • C#实现过滤html标签并保留a标签的方法
  • c#实现TextBox只允许输入数字
  • C# Winform 整个窗口拖动的实现代码
  • c# ListView实现双击Item事件的变通方法
  • C#实现随鼠标移动窗体实例
  • C#中的FileUpload 选择后的预览效果具体实现
  • C# 窗体隐藏及任务管理器中禁止关闭的实现代码
  • C#的锯齿数组以及C++实现代码
  • C#格式化文件大小的实现代码
  • 〔help〕有关JSP实现注册用户中的类型问题? iis7站长之家
  • C# char类型字符转换大小写的实现代码
  • 在脚本中如何实现输出格式化输出
  • 编一个模拟shell实现的程序,怎么实现输入输出重定向?谢谢
  • JMF中如何实现多路音频的混合输出?期待高手指教!
  • 怎样实现利用fprintf,输出定长字串,位数不足时在左侧填入指定字符填充。。
  • 怎么实现shell中的输入输出重定向,谢谢!
  • MT9D131是否可以实现灰度图像输出
  • linux下怎么实现在屏幕上指定地方输出字符?
  • 请问:如何实现jsp的汉字输出?
  • asp.net用Zxing库实现条形码输出的具体实现
  • ******"Servlet根据JSP视图的需求生成JavaBeans的实例并输出给JSP环境"如何实现上面这句话的效果??*******
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 如何实现float 到 int 的类型转换,string 到 int 的类型转换?
  • 〔help〕有关JSP实现注册用户中的类型问题?
  • 函数指针的强制类型转换实现代码
  • 如何用java实现将数据库中的image类型数据导出到文本文件。并导入(高分求救!!)
  • short类型转为二进制,并将转换后的二进制打印出来?如何实现?
  • JAVA中如何实现对基本类型的引用?
  • 锁定Vector类型,使其同一时刻只能有一个线程访问,怎么实现??
  • 如何实现 字符串类型---》整形的转换?
  • C++如何通过ostringstream实现任意类型转string
  • 利用C++实现从std::string类型到bool型的转换
  • PHP实现根据设备类型自动跳转相应页面的方法
  • 用C++实现strcpy(),返回一个char*类型的深入分析
  • C#中使用强制类型实现字符串和ASCII码之间的转换
  • mssql2008 自定义表类型实现(批量插入或者修改)
  • C#在运行时动态创建类型的实现方法
  • 请问如何在unix/linux环境下编程实现辨别当前程序执行者用户名和系统类型(linux or unix)
  • c#中CLR函数压缩(Gzip)ntext类型字段的实现代码
  • 用标准c++实现string与各种类型之间的转换
  • java实现插入mysql二进制文件,blob类型,遇到问题及解决办法
  • Java实现显示指定类型的文件
  • 通过javascript实现DIV居中,兼容各浏览器版本
  • socket实现多文件并发传输,求助多线程实现问题?
  • Python GUI编程:tkinter实现一个窗口并居中代码
  • interface 到底有什么用???实现接口,怎么实现??
  • 通过javascript库JQuery实现页面跳转功能代码
  • 怎么用Jsp实现在页面实现树型结构?
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • windows 下的PortTunnel 在linux下怎么实现?或者相应的已经实现的软件?端口映射
  • php实现socket实现客户端和服务端数据通信源代码
  • 网站重定向用C语言实现iptables,ACL实现
  • flash AS3反射实现(describeType和getDefinitionByName)


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3