using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Text;
using System.Data;
using System.Reflection;
using System.Collections;
using System.Data.Common; namespace Common
{
//Json转化类
public class ConvertToJson
{
#region 私有方法
private static string StringToJson(string s)
{
StringBuilder sb = new StringBuilder();
for (int i = ; 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();
} /// <summary>
/// 格式化字符型、日期型、布尔型
/// </summary>
/// <param name="str"></param>
/// <param name="type"></param>
/// <returns></returns>
private static string StringFormat(string str,Type type)
{
if(type==typeof(string))
{
str = StringToJson(str);
str = "\"" + str + "\"";
}
else if(type==typeof(DateTime))
{
str = "\"" + str + "\"";
}
else if(type==typeof(bool))
{
str = str.ToLower();
}
else if(type!=typeof(string)&&string.IsNullOrEmpty(str))
{
str = "\"" + str + "\"";
}
return str;
} #endregion #region List转化成Json
public static string ListToJson<T>(IList<T> list)
{
object obj = list[];
return ListToJson<T>(list, obj.GetType().Name);
} private static string ListToJson<T>(IList<T> list, string JsonName)
{
StringBuilder Json = new StringBuilder();
if (string.IsNullOrEmpty(JsonName)) JsonName = list[].GetType().Name;
Json.Append("{\""+JsonName+"\":[");
if(list.Count>)
{
for (int i = ; i < list.Count;i++ )
{
T obj = Activator.CreateInstance<T>();
PropertyInfo[] pi = obj.GetType().GetProperties();
Json.Append("{");
for (int j = ; 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 - )
{
Json.Append(",");
}
}
Json.Append("}");
if (i < pi.Length - )
{
Json.Append(",");
}
}
}
Json.Append("]}");
return Json.ToString();
} #endregion #region 对象转换为Json
public static string ToJson(object jsonObject)
{
string jsonString = "{";
PropertyInfo[] propertyInfo = jsonObject.GetType().GetProperties();
for (int i = ; 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-,jsonString.Length);
return jsonString + "}";
} #endregion #region 对象集合转换Json
public static string ToJson(IEnumerable array)
{
string JsonString = "[";
foreach(object item in array)
{
JsonString += ToJson(item) + ",";
}
JsonString.Remove(JsonString.Length - , JsonString.Length);
return JsonString + "]";
}
#endregion #region 普通集合转换为Json
public static string ToArrayString(IEnumerable array)
{
string jsonString = "[";
foreach(object item in array)
{
jsonString = ToJson(item.ToString()) + ",";
}
jsonString.Remove(jsonString.Length-,jsonString.Length);
return jsonString + "]";
} #endregion #region 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 + "]";
} /// <summary>
/// DataTable转换为Json
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static string ToJson(DataTable dt)
{
StringBuilder jsonString = new StringBuilder();
jsonString.Append("[");
DataRowCollection drc = dt.Rows;
for (int i = ; i < drc.Count;i++ )
{
jsonString.Append("{");
for (int j = ; 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-)
{
jsonString.Append(strValue+",");
}
else
{
jsonString.Append(strValue);
}
}
jsonString.Append("}");
}
jsonString.Remove(jsonString.Length-,jsonString.Length);
jsonString.Append("]");
return jsonString.ToString();
} /// <summary>
/// DataTable转换为Json
/// </summary>
/// <param name="dt"></param>
/// <param name="jsonName"></param>
/// <returns></returns>
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>)
{
for (int i = ; i < dt.Rows.Count;i++ )
{
Json.Append("{");
for (int j = ; 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(i<dt.Rows.Count-)
{
Json.Append(",");
}
}
Json.Append("}");
if(i<dt.Rows.Count-)
{
Json.Append(",");
}
}
}
Json.Append("]}");
return Json.ToString(); }
#endregion #region DataReader转换为Json
public static string ToJson(DbDataReader dataReader)
{
StringBuilder jsonString = new StringBuilder();
jsonString.Append("[");
while(dataReader.Read())
{
jsonString.Append("{");
for (int i = ; 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-)
{
jsonString.Append(strValue+",");
}
else
{
jsonString.Append(strValue);
} }
jsonString.Append("}");
}
dataReader.Close();
jsonString.Remove(jsonString.Length-,jsonString.Length);
jsonString.Append("]");
return jsonString.ToString();
}
#endregion }
}

C#转换成Json的方法集的更多相关文章

  1. C#中对象,字符串,dataTable、DataReader、DataSet,对象集合转换成Json字符串方法。

    C#中对象,字符串,dataTable.DataReader.DataSet,对象集合转换成Json字符串方法. public class ConvertJson { #region 私有方法 /// ...

  2. jquery里把数组转换成json的方法

    首先来看,jquery里自带的,和json相关的函数: 1.$.parseJSON  :  用来解析JSON字符串,返回一个对象. 什么叫“JSON字符串”? 比如: var a={name:&quo ...

  3. DataTable转换成json字符串

    将DataTable里面的行转换成json字符串方法: #region DataTable转为json /// <summary> /// DataTable转为json /// < ...

  4. json 字符串转换成对象,对象转换成json字符串

    json   字符串转换成对象,对象转换成json字符串 前端: 方法一: parseJSON方法:   [注意jquery版本问题] var str = '{"name":&qu ...

  5. C#中的DataSet、string、DataTable、对象转换成Json的实现代码

    C#中对象,字符串,dataTable.DataReader.DataSet,对象集合转换成Json字符串方法. public class ConvertJson { #region 私有方法 /// ...

  6. 用jquery解析JSON数据的方法以及字符串转换成json的3种方法

    用jquery解析JSON数据的方法,作为jquery异步请求的传输对象,jquery请求后返回的结果是 json对象,这里考虑的都是服务器返回JSON形式的字符串的形式,对于利用JSONObject ...

  7. DataTable 转换成 Json的3种方法

    在web开发中,我们可能会有这样的需求,为了便于前台的JS的处理,我们需要将查询出的数据源格式比如:List<T>.DataTable转换为Json格式.特别在使用Extjs框架的时候,A ...

  8. js如何把字符串转换成json数据的方法

    js如何把字符串转换成json数据的方法 function strtojson(str){ var json = eval('(' + str + ')'); return json; } 方法二 f ...

  9. JavaScript:将key和value不带双引号的JSON字符串转换成JSON对象的方法

    遇到相关的问题,花了两天的时间来解决,深感来之不易,所以做如下的总结,希望遇到此问题的码农能更快的找到解决办法! var jsonArr= [{col:TO_CHAR(HZRQ,'YYYYMM'),t ...

随机推荐

  1. [学习笔记]Splay

    其实就是一道题占坑啦 [NOI2005]维护数列 分析: 每次操作都要 \(Splay\) 一下 \(Insert\) 操作:重建一棵平衡树,把 \(l\) 变成根,\(l+2\) 变成右子树的根,那 ...

  2. javascript 模块化学习:Class打包出来无法实例化问题

    菜鸟初学前端,第一次尝试使用webpack, 目的是做一个lib,想用webpack + babel 自动化打包出来 es5 的js代码 模块中用到了Class,直接export{className} ...

  3. javaScript中BOM

    BOM是browser object model的缩写,简称浏览器对象模型 主要处理浏览器窗口(window)和框架(iframe),简述了与浏览器进行交互的方法和接口, 可以对浏览器窗口进行访问和操 ...

  4. 【转】iOS中属性与成员变量的区别

    [转载自并整理 http://blog.csdn.net/itianyi/article/details/8618128] 一.类Class中的属性property 在ios第一版中,我们为输出口同时 ...

  5. Window 上安装Node.js

    Window 上安装Node.js 1.Windows安装包下载地址 https://nodejs.org/en/ 2.下载好后,按照默认设置即可,安装路径可以更改 3.安装好后,检测PATH环境变量 ...

  6. VM虚拟机-Ubuntu server- 桥接模式网络配置

    问题描述: 在Ubuntu虚拟机安装完毕之后,网络连接采用桥接模式,对虚拟机的eth0网卡进行静态IP设置,参数配置没有问题,但网络一直没有连接成功:即:无法实现本地主机连通虚拟机(ping不通该虚拟 ...

  7. StringBuffer、StringBuilder、冒泡与选择排序、二分查找、基本数据类型包装类_DAY13

    1:数组的高级操作(预习) (1)数组:存储同一种数据类型的多个元素的容器. (2)特点:每个元素都有从0开始的编号,方便我们获取.专业名称:索引. (3)数组操作: A:遍历 public stat ...

  8. 再学Java 之 interface的成员变量

    前言:最近在学多线程,写“哲学家就餐问题(Dining Philosophers)”的时候,需要定义一个全局的变量,即哲学家的人数.常用的做法是在其中一个类中定义一个static final的变量,然 ...

  9. RocketMq(二)消息中间件源码下载、模块分化以及集群模式的认知

    1.通过IDEA使用git下载源码 到RocketMq官网指定的GitHub路径获取下载链接 https://github.com/apache/rocketmq 获取下载源码路径 使用IDEA自带的 ...

  10. spring boot 与 自定义interceptor

    前面学习过过滤器, 但是过滤器是针对servlet的, 用在springmvc和spring boot里面, 功能上, 感觉并不是很好用. 那这里来学习一下拦截器. 一. 拦截器的执行顺序 1. 目录 ...