json转换(c#后台生成json的方法)
此文转自:http://bbs.csdn.net/topics/380200497,为了方便自己记忆才以文章形式保存。
using
System;
using
System.Collections.Generic;
using
System.Text;
using
System.Data;
using
System.Reflection;
using
System.Collections;
using
System.Data.Common;
namespace
DotNet.Utilities
{
//JSON转换类
public
class
ConvertJson
{
#region 私有方法
/// <summary>
/// 过滤特殊字符
/// </summary>
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();
}
/// <summary>
/// 格式化字符型、日期型、布尔型
/// </summary>
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();
}
else
if
(type !=
typeof
(
string
) &&
string
.IsNullOrEmpty(str))
{
str =
"\""
+ str +
"\""
;
}
return
str;
}
#endregion
#region List转换成Json
/// <summary>
/// List转换成Json
/// </summary>
public
static
string
ListToJson<T>(IList<T> list)
{
object
obj = list[0];
return
ListToJson<T>(list, obj.GetType().Name);
}
/// <summary>
/// List转换成Json
/// </summary>
public
static
string
ListToJson<T>(IList<T> 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<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(
"]}"
);
return
Json.ToString();
}
#endregion
#region 对象转换为Json
/// <summary>
/// 对象转换为Json
/// </summary>
/// <param name="jsonObject">对象</param>
/// <returns>Json字符串</returns>
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 +
"}"
;
}
#endregion
#region 对象集合转换Json
/// <summary>
/// 对象集合转换Json
/// </summary>
/// <param name="array">集合对象</param>
/// <returns>Json字符串</returns>
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 +
"]"
;
}
#endregion
#region 普通集合转换Json
/// <summary>
/// 普通集合转换Json
/// </summary>
/// <param name="array">集合对象</param>
/// <returns>Json字符串</returns>
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 +
"]"
;
}
#endregion
#region DataSet转换为Json
/// <summary>
/// DataSet转换为Json
/// </summary>
/// <param name="dataSet">DataSet对象</param>
/// <returns>Json字符串</returns>
public
static
string
ToJson(DataSet dataSet)
{
string
jsonString =
"{"
;
foreach
(DataTable table
in
dataSet.Tables)
{
jsonString +=
"\""
+ table.TableName +
"\":"
+ ToJson(table) +
","
;
}
jsonString = jsonString.TrimEnd(
','
);
return
jsonString +
"}"
;
}
#endregion
#region Datatable转换为Json
/// <summary>
/// Datatable转换为Json
/// </summary>
/// <param name="table">Datatable对象</param>
/// <returns>Json字符串</returns>
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();
}
/// <summary>
/// DataTable转换为Json
/// </summary>
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();
}
#endregion
#region DataReader转换为Json
/// <summary>
/// DataReader转换为Json
/// </summary>
/// <param name="dataReader">DataReader对象</param>
/// <returns>Json字符串</returns>
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();
}
#endregion
}
}
json转换(c#后台生成json的方法)的更多相关文章
- aspx后台生成json对象
json对象应用很广,有时,我们要把一些数据转化为json对象,就需要用到以下方法了. 1.使用Newtonsoft.Json.DLL (推荐使用) 下载地址:http://files.cnblogs ...
- 如何使用fastJson来解析JSON格式数据和生成JSON格式数据
由于项目用到了JSON格式的数据,在网上搜索到了阿里的fastjson比较好用,特此记录fastjson用法,以备以后查询之用. decode: 首先创建一个JSON解析类: public class ...
- json转换成dart类 JSON to Dart
json_to_dart的使用 如果我们得到一个特别复杂的JSON,有时候会无从下手开始写Model,这时候就可以使用一些辅助工具.我认为json_to_dart是比较好用的一个.它可以直接把json ...
- json转换工具类:json<===>list或者对象
public class JsonTools { /** * POJO 转 JSON */ public static String createJsonString(Object object) { ...
- C#中Json转换主要使用的几种方法!
这篇主要介绍2.4.第三种方法使用的比较局限,所以我没有深入学习. 第二种方法 我使用比较多的方式,这个方法是.NET内置的,使用起来比较方便 A.利用serializer获取json的泛型对象 利用 ...
- PHP中生成json信息的方法
<?php //php中生成json信息 //json_encode(数组/对象) $color = array('red','blue','green'); //[索引数组] echo jso ...
- atitit.XML类库选型及object 对象bean 跟json转换方案
atitit.XML类库选型及object 对象bean 跟json转换方案 1. XML类库可以分成2大类.标准的.这些类库通常接口和实现都是分开的 1 2. 常见的xml方面的方法 2 2.1. ...
- Android原生生成JSON与解析JSON
JSON数据是一种轻量级的数据交换格式,在Android中通常应用于client与server交互之间的传输数据.像如今在网上有非常多解析JSON数据的jar包,可是归根究竟用的都是Android原生 ...
- Ajax前台返回JSON数据后再Controller中直接转换成类型使用,后台接收json转成实体的方法
之前写过一篇记录文章,写的是将一个比较复杂的数据结构在前台组合起来后传递到后台. 当时并不太了解@RequestBody,也并没有使用js提供的JSON.stringify()方法 所有都是自己写的, ...
随机推荐
- [Objective-c 基础 - 2.7] 构造方法、重写init方法
A.id 万能指针,可以指向任何对象,实质是NSObject的指针,使用的时候不用加上* B.NSObject中得类方法new 1.完整地创建一个可用对象步骤 (1)分配存储空间 + alloc ...
- 【Android】JSONArray的合并
在Android开发过程中,需要处理解析服务器JSON数据时,或需要进行两个或多个JSONArray合并操作. 比如在进行LIstView的动态更新时. 在此提供一种JSONArray合并的方法,方便 ...
- 上传GIF图片方法!
有朋友问,如何上传GIF图片,在此做一下说明.方法是:在第二栏“上传图片”栏——选择“无水印”——选择文件(找到文件)——点击上传——点击插入——我选的图片 ——上传成功了!
- DOM 的选择器 API
在刚开始的时候,我们只能用 getElementById,getElementsByClassName,getElementsByTagName 这几个 DOM 方法查找 DOM 树中的元素.后来,在 ...
- C++容器类的简介
C++容器类的简介 一.原型与构造函数 Vector的原型可定义为 vector<T, allocator <T> > 其构造函数为 vector() ...
- Nginx+Keepalived+Tomcat之动静分离的web集群
#vi /etc/nginx/nginx.conf############################################user nginx nginx;worker_process ...
- ios开发——实用技术篇&网络音频播放
网络音频播放 在日常的iOS开发中,我们通常会遇到媒体播放的问题,XCode中已经为我们提供了功能非常强大的AVFoundation框架和 MediaPlayer框架.其中AVFoundation框架 ...
- careercup-中等难度 17.12
17.12 设计一个算法,找出数组中两数之和为指定值的所有整数对. 解答 时间复杂度O(n)的解法 我们可以用一个哈希表或数组或bitmap(后两者要求数组中的整数非负)来保存sum-x的值, 这样我 ...
- [006]为什么C++会被叫做是C++?
先了解一下自增和自减的运算符: 自增(++)和自减(--)操作符为对象提供加1或减1操作: int i = 0, j; j = ++i; // j = 1, i = 1: prefix yields ...
- mysql服务器辅助选项
查看控制台命令行前缀 : echo $PS1 ,例如输出 '[\u@\h \w]# 其中,\u是用户名,\h是主机名称: hostname -s 可以查看当前主机名, hostname 'z ...