C 任意类型数据转JSON格式
更新时间:2023-07-25 02:18:01 阅读量: 实用文档 文档下载
- c罗推荐度:
- 相关推荐
C# 任意类型数据转JSON格式
///<summary>
/// List转成json
///</summary>
///<typeparam name="T"></typeparam>
///<param name="jsonName"></param>
///<param name="list"></param>
///<returns></returns>
publicstaticstringListToJson<T>(IList<T> list, stringjsonName) {
StringBuilderJson = newStringBuilder();
if (string.IsNullOrEmpty(jsonName))
jsonName = list[0].GetType().Name;
Json.Append("{\"" + jsonName + "\":[");
if (list.Count>0)
{
for (inti = 0; i<list.Count; i++)
{
T obj = Activator.CreateInstance<T>();
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("]}");
returnJson.ToString();
///<summary>
/// List转成json
///</summary>
///<typeparam name="T"></typeparam>
///<param name="list"></param>
///<returns></returns>
publicstaticstringListToJson<T>(IList<T> list)
{
objectobj = list[0];
returnListToJson<T>(list, obj.GetType().Name);
}
///<summary>
/// 对象转换为Json字符串
///</summary>
///<param name="jsonObject">对象</param>
///<returns>Json字符串</returns>
publicstaticstringToJson(objectjsonObject)
{
stringjsonString = "{";
PropertyInfo[] propertyInfo = jsonObject.GetType().GetProperties(); for (inti = 0; i<propertyInfo.Length; i++)
{
objectobjectValue = propertyInfo[i].GetGetMethod().Invoke(jsonObject, null);
string value = string.Empty;
if (objectValueisDateTime || objectValueisGuid ||
objectValueisTimeSpan)
{
value = "'" + objectValue.ToString() + "'";
}
elseif (objectValueisstring)
{
value = "'" + ToJson(objectValue.ToString()) + "'";
}
elseif (objectValueisIEnumerable)
{
value = ToJson((IEnumerable)objectValue);
}
else
{
value = ToJson(objectValue.ToString());
jsonString += "\"" + ToJson(propertyInfo[i].Name) + "\":" + value + ","; }
jsonString.Remove(jsonString.Length - 1, jsonString.Length); returnjsonString + "}";
}
///<summary>
/// 对象集合转换Json
///</summary>
///<param name="array">集合对象</param>
///<returns>Json字符串</returns>
publicstaticstringToJson(IEnumerable array)
{
stringjsonString = "[";
foreach (object item in array)
{
jsonString += ToJson(item) + ",";
}
jsonString.Remove(jsonString.Length - 1, jsonString.Length); returnjsonString + "]";
}
///<summary>
/// 普通集合转换Json
///</summary>
///<param name="array">集合对象</param>
///<returns>Json字符串</returns>
publicstaticstringToArrayString(IEnumerable array)
{
stringjsonString = "[";
foreach (object item in array)
{
jsonString = ToJson(item.ToString()) + ",";
}
jsonString.Remove(jsonString.Length - 1, jsonString.Length); returnjsonString + "]";
}
///<summary>
///Datatable转换为Json
///</summary>
///<param name="table">Datatable对象</param>
///<returns>Json字符串</returns>
publicstaticstringToJson(DataTabledt)
{
StringBuilderjsonString = newStringBuilder();
jsonString.Append("[");
DataRowCollectiondrc = dt.Rows;
for (inti = 0; i<drc.Count; i++)
{
jsonString.Append("{");
for (int j = 0; j <dt.Columns.Count; j++)
{
stringstrKey = dt.Columns[j].ColumnName;
stringstrValue = 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("]");
returnjsonString.ToString();
}
///<summary>
///DataTable转成Json
///</summary>
///<param name="jsonName"></param>
///<param name="dt"></param>
///<returns></returns>
publicstaticstringToJson(DataTabledt, stringjsonName)
{
StringBuilderJson = newStringBuilder();
if (string.IsNullOrEmpty(jsonName))
jsonName = dt.TableName;
Json.Append("{\"" + jsonName + "\":[");
if (dt.Rows.Count>0)
{
for (inti = 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("]}");
returnJson.ToString();
}
///<summary>
///DataReader转换为Json
///</summary>
///<param name="dataReader">DataReader对象</param>
///<returns>Json字符串</returns>
publicstaticstringToJson(DbDataReaderdataReader)
{
StringBuilderjsonString = newStringBuilder();
jsonString.Append("[");
while (dataReader.Read())
{
jsonString.Append("{");
for (inti = 0; i<dataReader.FieldCount; i++)
{
Type type = dataReader.GetFieldType(i);
stringstrKey = dataReader.GetName(i);
stringstrValue = 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("]");
returnjsonString.ToString();
}
///<summary>
///DataSet转换为Json
///</summary>
///<param name="dataSet">DataSet对象</param>
///<returns>Json字符串</returns>
publicstaticstringToJson(DataSetdataSet)
{
stringjsonString = "{";
foreach (DataTable table indataSet.Tables)
{
jsonString += "\"" + table.TableName + "\":" + ToJson(table) + ","; }
jsonString = jsonString.TrimEnd(',');
returnjsonString + "}";
}
///<summary>
/// 过滤特殊字符
///</summary>
///<param name="s"></param>
///<returns></returns>
privatestaticstring String2Json(String s)
{
StringBuildersb = newStringBuilder();
for (inti = 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;
}
}
returnsb.ToString();
}
///<summary>
/// 格式化字符型、日期型、布尔型
///</summary>
///<param name="str"></param>
///<param name="type"></param>
///<returns></returns>
privatestaticstringStringFormat(stringstr, Type type) {
if (type == typeof(string))
{
str = String2Json(str);
str = "\"" + str + "\"";
}
elseif (type == typeof(DateTime))
{
str = "\"" + str + "\"";
}
elseif (type == typeof(bool))
{
str = str.ToLower(); }
return
str;
}
正在阅读:
C 任意类型数据转JSON格式07-25
PE二级市场03-08
控辍保学领导小组及分工12-10
温州2013中考物理试卷及答案 - 图文03-10
网上商城详细设计说明书06-07
乒乓球接力赛作文600字06-20
国际疾病分类(ICD-10) - 确定根本死因的规则和指导--死因链推断09-14
儿歌集11-13
我国健康保险的发展现状、问题及建议03-08
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 任意
- 类型
- 格式
- 数据
- JSON
- 复合函数的定义域1
- 高一历史第二分册第三单元《从两汉到南北朝的分合》试题
- 软件产业发展汇报材料
- 湘教版小六年级期末模拟语文(上)试题
- 小型预制构件说明书
- 复习专用C语言程序设计课堂练习题综合
- 阿莫西林克拉维酸钾细颗粒辅料的选择
- 服装质量检验标准
- 医务科2017年工作思路Word编辑
- 中药材商品学模拟题带答案
- 玉林“吴常昌牛巴”新产品上市与推广策划书策划案
- 老师考核自我鉴定模板范文五篇
- 数字图像处理中边缘检测算法的对比研究
- 用友U8存货核算流程
- 社会事业单位员工入党思想汇报
- 51单片机和PLD的PROTEUS电路仿真
- 液压与气压传动习题(含解答)
- C14078 沪港通与香港证券市场制度介绍课后测验
- Java中的反射机制
- 利用经纬网确定位置