C# - JSON详解
2015-09-01 11:29
639 查看
先要引用json.net命名空间
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
然后利用JSON.NET的JsonConvert方法把对象序列化为json字符串
实体类转为json字符串
List<Corder> corderlists = new List<Corder>();
Corder corder = new Corder { strCode = "aa", strCustid = "bb", strSaleman = "cc", dtDate = '2015-9-1', decAmt =200};
corderlists.Add(corder);
Corder corder = new Corder { strCode = "aaa", strCustid = "bbb", strSaleman = "ccc", dtDate = '2015-9-1', decAmt =3000};
corderlists.Add(corder);
string strJson = JsonConvert.SerializeObject(corderlists);
使用LINQ to JSON定制JSON数据
使用JsonConvert对象的SerializeObject只是简单地将一个list或集合转换为json字符串。但是,有的时候我们的前端 框架比如ExtJs对服务端返回的数据格式是有一定要求的,比如下面的数据格式,这时就需要用到JSON.NET的LINQ to JSON,LINQ to JSON的作用就是根据需要的格式来定制json数据。
比如经常用在分页的json格式如代码:
实体类转为有格式的json字符串
JObject jobjectJson = new JObject(new JProperty("total", corderlists.Count),
new JProperty("row", new JArray(
from p in corderlists select new JObject(
new JProperty("strCode", p.strCode),
new JProperty("strCustid", p.strCustid),
new JProperty("strSaleman",p.strSaleman),
new JProperty("dtDate",p.dtDate),
new JProperty("decAmt",p.decAmt)
))
));
客户端提交过来的数据一般都是json字符串,有了更好地进行操作(面向对象的方式),所以我们一般都会想办法将json字符串转换为json对象。例如客户端提交了以下数组格式json字符串
string str_corderjson = @"[{ strCode : 'aaaa', strCustid :'bbbb', strSaleman : 'cccc', decAmt : 3000,dtDate :'2015-9-1' }]";
//Object或JArray的Parse方法轻松地将json字符串转换为json对象.
JArray jobjectcorder = JArray.Parse(str_corderjson);
foreach (JObject aa in jobjectcorder)
{
Console.WriteLine("单号:{0},客户编码{1},金额{2},日期{3}", aa["strCode"], aa["strCustid"], aa["decAmt"], aa["dtDate"]);
}
也可以使用JsonConvert的DeserializeObject方法
如果转为实体类,一般用JsonConvert的DeserializeObject方法
string str_corderjson = @"{ strCode : 'aaaa', strCustid :'bbbb', strSaleman : 'cccc', decAmt : 3000,dtDate :'2015-9-1' }";
Corder corderobject = JsonConvert.DeserializeObject<Corder>(str_corderjson);
Console.WriteLine("单号:{0},客户编码{1},金额{2},日期{3}", corderobject.strCode, corderobject.strCustid, corderobject.decAmt.ToString(), corderobject.dtDate.ToString());
在服务端,由.net对象转换json字符串优先使用JsonConvert对象的SerializeObject方法,定制输出json字符串使用LINQ to JSON。由json字符串转换为.net对象优先使用JsonConvert对象的DeserializeObject方法,然后也可以使用LINQ to JSON
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
然后利用JSON.NET的JsonConvert方法把对象序列化为json字符串
实体类转为json字符串
List<Corder> corderlists = new List<Corder>();
Corder corder = new Corder { strCode = "aa", strCustid = "bb", strSaleman = "cc", dtDate = '2015-9-1', decAmt =200};
corderlists.Add(corder);
Corder corder = new Corder { strCode = "aaa", strCustid = "bbb", strSaleman = "ccc", dtDate = '2015-9-1', decAmt =3000};
corderlists.Add(corder);
string strJson = JsonConvert.SerializeObject(corderlists);
使用LINQ to JSON定制JSON数据
使用JsonConvert对象的SerializeObject只是简单地将一个list或集合转换为json字符串。但是,有的时候我们的前端 框架比如ExtJs对服务端返回的数据格式是有一定要求的,比如下面的数据格式,这时就需要用到JSON.NET的LINQ to JSON,LINQ to JSON的作用就是根据需要的格式来定制json数据。
比如经常用在分页的json格式如代码:
{ "total": 5, //记录总数 "rows":[ //json格式的数据列表 ] }
实体类转为有格式的json字符串
JObject jobjectJson = new JObject(new JProperty("total", corderlists.Count),
new JProperty("row", new JArray(
from p in corderlists select new JObject(
new JProperty("strCode", p.strCode),
new JProperty("strCustid", p.strCustid),
new JProperty("strSaleman",p.strSaleman),
new JProperty("dtDate",p.dtDate),
new JProperty("decAmt",p.decAmt)
))
));
客户端提交过来的数据一般都是json字符串,有了更好地进行操作(面向对象的方式),所以我们一般都会想办法将json字符串转换为json对象。例如客户端提交了以下数组格式json字符串
string str_corderjson = @"[{ strCode : 'aaaa', strCustid :'bbbb', strSaleman : 'cccc', decAmt : 3000,dtDate :'2015-9-1' }]";
//Object或JArray的Parse方法轻松地将json字符串转换为json对象.
JArray jobjectcorder = JArray.Parse(str_corderjson);
foreach (JObject aa in jobjectcorder)
{
Console.WriteLine("单号:{0},客户编码{1},金额{2},日期{3}", aa["strCode"], aa["strCustid"], aa["decAmt"], aa["dtDate"]);
}
也可以使用JsonConvert的DeserializeObject方法
如果转为实体类,一般用JsonConvert的DeserializeObject方法
string str_corderjson = @"{ strCode : 'aaaa', strCustid :'bbbb', strSaleman : 'cccc', decAmt : 3000,dtDate :'2015-9-1' }";
Corder corderobject = JsonConvert.DeserializeObject<Corder>(str_corderjson);
Console.WriteLine("单号:{0},客户编码{1},金额{2},日期{3}", corderobject.strCode, corderobject.strCustid, corderobject.decAmt.ToString(), corderobject.dtDate.ToString());
总结
在客户端,读写json对象可以使用”.”操作符或”["key”]”,json字符串转换为json对象使用eval()函数。在服务端,由.net对象转换json字符串优先使用JsonConvert对象的SerializeObject方法,定制输出json字符串使用LINQ to JSON。由json字符串转换为.net对象优先使用JsonConvert对象的DeserializeObject方法,然后也可以使用LINQ to JSON
相关文章推荐
- c#调用COM组件
- XML 与 JSON 优劣对比
- C#实现把指定数据写入串口
- C#动态创建button的方法
- C#中抽象方法与虚拟方法的区别
- c#中虚函数的相关使用方法
- C#使用加边法计算行列式的值
- C#实现多线程的同步方法实例分析
- C#中尾递归的使用、优化及编译器优化
- C#通用邮件发送类分享
- C#中this的用法集锦
- C#.NET获取拨号连接的宽带连接方法
- C#实现AddRange为数组添加多个元素的方法
- C#中Equality和Identity浅析
- C#生成饼形图及添加文字说明实例代码
- C#判等对象是否相等的方法汇总
- C#简单的向量用法实例教程
- C#实现基于链表的内存记事本实例
- C#托管堆对象实例包含内容分析
- newtonsoft.json解析天气数据出错解决方法