JsonHandler类:下载
做Web应用开发的同学,难免有些用到数据交互,而前端比较常用,而且十分好用的就是Json格式的数据了。
JSON的优点:
1、基于纯文本,跨平台传递极其简单;
2、Javascript原生支持,后台语言几乎全部支持;
3、轻量级数据格式,占用字符数量极少,特别适合互联网传递;
4、可读性较强,虽然比不上XML那么一目了然,但在合理的依次缩进之后还是很容易识别的;
5、容易编写和解析,当然前提是你要知道数据结构;
先将JsonHandler类源码贴上大家看一遍,接着我们用例子演示说明:
现在我们来演示将List<>、Model、DataTable转换为Json 字符串吧:
我们先定义一个Person类:
初始化数据,初始化Peroson类数据,与初始化个DataTable:
模型Model转换为Json:
结果:
List 转换为Json:
结果:
DataTable 转换为Json:
结果:
/**************************************************************************************************/
List<T>转Json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
public
static
string
Obj2Json<T>(T data)
{
try
{
System.Runtime.Serialization.Json.DataContractJsonSerializer serializer =
new
System.Runtime.Serialization.Json.DataContractJsonSerializer(data.GetType());
using
(MemoryStream ms =
new
MemoryStream())
{
serializer.WriteObject(ms, data);
return
Encoding.UTF8.GetString(ms.ToArray());
}
}
catch
{
return
null
;
}
}
|
Json转List<T>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
public
static
Object Json2Obj(String json,Type t)
{
try
{
System.Runtime.Serialization.Json.DataContractJsonSerializer serializer =
new
System.Runtime.Serialization.Json.DataContractJsonSerializer(t);
using
(MemoryStream ms =
new
MemoryStream(Encoding.UTF8.GetBytes(json)))
{
return
serializer.ReadObject(ms);
}
}
catch
{
return
null
;
}
}
|
DataTable 转Json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
public
static
string
DataTable2Json(DataTable dt)
{
if
(dt.Rows.Count == 0)
{
return
""
;
}
StringBuilder jsonBuilder =
new
StringBuilder();
// jsonBuilder.Append("{");
//jsonBuilder.Append(dt.TableName.ToString());
jsonBuilder.Append(
"["
);
//转换成多个model的形式
for
(
int
i = 0; i < dt.Rows.Count; i++)
{
jsonBuilder.Append(
"{"
);
for
(
int
j = 0; j < dt.Columns.Count; j++)
{
jsonBuilder.Append(
"\""
);
jsonBuilder.Append(dt.Columns[j].ColumnName);
jsonBuilder.Append(
"\":\""
);
jsonBuilder.Append(dt.Rows[i][j].ToString());
jsonBuilder.Append(
"\","
);
}
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
jsonBuilder.Append(
"},"
);
}
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
jsonBuilder.Append(
"]"
);
// jsonBuilder.Append("}");
return
jsonBuilder.ToString();
}
|
单个对象转JSON
1
2
3
4
5
6
7
8
9
|
public
static
T Json2Obj<T>(
string
json)
{
T obj = Activator.CreateInstance<T>();
using
(System.IO.MemoryStream ms =
new
System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(json)))
{
System.Runtime.Serialization.Json.DataContractJsonSerializer serializer =
new
System.Runtime.Serialization.Json.DataContractJsonSerializer(obj.GetType());
return
(T)serializer.ReadObject(ms);
}
}
|