先要引用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};
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格式的数据列表 ] }
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