@H_
404_9@
/// <sumMary>
/// Json帮助类
</sumMary>
public class JsonHelper
{
<sumMary>
将对象序列化为JSON格式
</sumMary>
<param name="o">对象</param>
<returns>json字符串</returns>
static String serializeObject(object o)
{
String json = JsonConvert.serializeObject(o);
return json;
}
解析JSON字符串@L_607_3@对象实体
<typeparam name="T">对象类型</typeparam>
<param name="json">json字符串(eg.{"ID":"112","Name":"石子儿"})对象实体static T DeserializeJsonToObject<T>(String json) where T : class
{
Jsonserializer serializer = new Jsonserializer();
StringReader sr = new StringReader(json);
object o = serializer.Deserialize(new JsontextReader(sr),typeof(T));
T t = o as T;
return t;
}
解析JSON数组@L_607_3@对象实体集合
json数组字符串(eg.[{"ID":"112","Name":"石子儿"}])对象实体集合static List<T> DeserializeJsonToList<T>(typeof(List<T>));
List<T> list = o as List<T>;
return list;
}
反序列化JSON到给定的匿名对象.
匿名对象类型<param name="anonymousTypeObject">匿名对象static T DeserializeAnonymousType<T>(String json,T anonymousTypeObject)
{
T t = JsonConvert.DeserializeAnonymousType(json,anonymousTypeObject);
return t;
}
}
@H_
404_9@
@H_
404_9@
@H_
404_9@
为进一步理解Newtonsoft,写了一些测试的例子:
Json测试
class JsonTest : IRun
{
void Run()
{
student sdudent =
new student();
sdudent.ID =
1;
sdudent.Name =
"陈晨";
sdudent.NickName =
石子儿";
sdudent.Class =
new Class()
{ Name =
Cs0216",ID =
0216 };
//实体序列化和反序列化
String json1 =
JsonHelper.serializeObject(sdudent);
json1 : {"ID":1,"Name":"陈晨","NickName":"石子儿","Class":{"ID":216,"Name":"Cs0216"}}
student sdudent1 = Json
Helper.De
serializeJsonToOb
ject<
student>
(json1);
实体集合序列化和反序列化
List<
student> sdudentList =
new List<
student>
() { sdudent,sdudent1 };
String json2 =
JsonHelper.serializeObject(sdudentList);
json: [{"ID":1,"Name":"Cs0216"}},{"ID":1,"Name":"Cs0216"}}]
List<
student> sdudentList2 = Json
Helper.De
serializeJsonToList<
student>
(json2);
DataTable序列化和反序列化
DataTable dt =
new DataTable();
dt.Tablename =
student";
dt.columns.Add(IDtypeof(
int));
dt.columns.Add(Name");
dt.columns.Add(NickName");
Da@R_87_2301@w dr =
dt.NewRow();
dr["] =
112;
dr[战三";
dr[小三";
dt.Rows.Add(dr);
String json3 =
JsonHelper.serializeObject(dt);
json3 : [{"ID":112,"Name":"战三","NickName":"小三"}]
DataTable sdudentDt3 = Json
Helper.De
serializeJsonToOb
ject<DataTable>
(json3);
List<
student> sdudentList3 = Json
Helper.De
serializeJsonToList<
student>
(json3);
验证对象和数组
student sdudent4 = Json
Helper.De
serializeJsonToOb
ject<
student>(
{\"ID\":\"112\",\"Name\":\"石子儿\"}");
List<
student> sdudentList4 = Json
Helper.De
serializeJsonToList<
student>(
[{\"ID\":\"112\",\"Name\":\"石子儿\"}]");
匿名对象解析
var tempEntity =
new { ID =
0,Name =
String.Empty };
String json5 =
JsonHelper.serializeObject(tempEntity);
json5 : {"ID":0,"Name":""}
tempEntity = Json
Helper.De
serializeAnon
ymousType(
",tempEntity);
var temp
student =
new student();
tempstudent = Json
Helper.De
serializeAnon
ymousType(
:rgb(128,tempstudent);
Console.Read();
}
}
学生信息实体
class student
{
int ID
{ get;
set; }
String Name
{ String NickName
{ public Class Class
{ set; }
}
学生班级实体
class Class
{
set; }
}
@L_673_11@实体序列化serializeObject()和反序列化DeserializeJsonToObject()两个方法就可以了。但有些情况下我们解析json字符串时,可能没有对应的实体类型(或者说不想添加对应的实体类),这时候可以用匿名对象解析方法DeserializeAnonymousType(),方便快捷,对应代码如下:
@H_
404_9@
:rgb(0,tempEntity);
Console.WriteLine(tempEntity.ID + :" + tempEntity.Name);
@H_
404_9@
@H_
404_9@
2.Json的两种结构数组和对象解析时略有不同。Json对象一般转换成实体,Json数组一般转换成实体集合。代码如下:
");
@H_
404_9@
简单解释下Json对象和数组的含义:
对象是以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间运用 “,”(逗号)分隔。名称用引号括起来;值如果是字符串则必须用括号,数值型则不须要。例如:{"ID":"112","Name":"石子儿"}。
数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间运用 “,”(逗号)分隔。例如:[{"ID":"112","Name":"石子儿"},{"ID":"113","Name":"陈晨"}]。
@H_
772_398@
本图文内容来源于网友网络收集整理提供,作为学习参
考使用,版权属于原作者。@H_
772_398@