登录 / 注册
C#中json的操作
发布时间:2018-01-05 16:32:11 查看:2750
  1. using Newtonsoft.Json.Linq;  

引入前辈的原网址:http://www.cnblogs.com/Sky-cloudless/archive/2012/04/24/2467936.html


1:根据简单的json字符串创建一个JObject对象。

[csharp] view plain copy
  1. /*string json={“name”:“Tom”,“age”:“15”}*///模板  
  2. /*方式1*/  
  3. JObject jo=new JObject();  
  4. jo.Add(new JProperty("name""Tom"));  
  5. jo.Add(new JProperty("age""15"));  
  6.   
  7. /*方式2*/  
  8. JObject jo2=new JObject(new JProperty("name""Tom"),new JProperty("age""15"));  

以上两种方式根据简单的json字符串创建了json对象.


2:根据模板对JArray数组的创建

[csharp] view plain copy
  1. /*string str_ja=["15225183408","18749495008"]*/  
  2. JArray ja=new JArray();  
  3. ja.Add(new JValue("15252183408"));  
  4. ja.Add(new JValue("18749495008"));  

3:需求:建一个关于学生的JObject对象,这个学生有姓名,年龄,电话(2个)

[csharp] view plain copy
  1. /* 
  2. {"name":"Tom","age":"15","phone":["15228183408","18749495008"]} 
  3. */  
  4. JObject jo=new JObject(new JProperty("name""Tom"),new JProperty("age""15"));  
  5. JArray ja=new JArray();  
  6. ja.Add(new JValue("15252183408"));  
  7. ja.Add(new JValue("18749495008"));  
  8. jo.Add(new JProperty("phone",ja.ToString()));  

4:按模板构建json对象

[csharp] view plain copy
  1. {  
  2.     "TeamName"".NET-a组",  
  3.     "Dept""计科2班",  
  4.     "Mannager""张二蛋",  
  5.     "Member":[  
  6.                 {"NAME":"tOM","AGE":"15","PHONE":["15225183408","18749495008"]},  
  7.                 {"NAME":"tAKIM","AGE":"16","PHONE":["15225183128","18749495003"]}  
  8.   
  9.             ]  
  10. }  

5:根据模板,读取json对象的对应字段

[csharp] view plain copy
  1.   {  
  2.    "message":  
  3.    {  
  4.        "PRODNAME""精谛果蔬原汁机",//名称  
  5.        "PRESENTSCODE""ZP330006",  
  6.        "POINT"null,  
  7.        "SPRICE"null,  
  8.        "PRESENTID""ZP330006",  
  9.        "PRICEFORNORMAL""2680",  
  10.        "GETPOINT": 1398,        //可获积分  
  11.        "PRODTYPE""0",  
  12.        "USEPOINT": 0,  
  13.        "BENEFIT": 100,  
  14.        "SCODE""JDGSYZJ",  
  15.        "TRANMODE"null,  
  16.        "PRESENTNUM": 1,  
  17.        "PRESENTNAME""金彪马陶瓷刀",//赠品名称  
  18.        "UNITPRICE": 1398,        //销售价  
  19.        "SPEC":           //规格信息  
  20.        [  
  21.            {  
  22.                "SPEC3"null,   //款式/尺码  
  23.                "SPEC2""JD--12",   //编码  
  24.                "STORENUM": 64,  //库存  
  25.                "SPEC1""白色"    //颜色  
  26.            }  
  27.        ],  
  28.        "PRODID""330006",      //货号  
  29.        "INPRICE": 908       //进价  
  30.    }  
  31. }    

以上信息是一个"商品明细接口"返回的一个货号为330066商品的基本信息,我们需要读取库存字段,名称字段,价格字段.\

我们可以把上面的内容转化为一个JObject对象,然后就可以读取了;如下代码:

[csharp] view plain copy
  1. {  
  2.         WebRequest wr = WebRequest.Create("http://xxxxxxxxxxxxxxxx:1218/product/proid?proid=330066");//URI  
  3.         WebResponse wres = wr.GetResponse();  
  4.         Stream stream = wres.GetResponseStream();  
  5.         StreamReader sr = new StreamReader(stream);  
  6.         string strJson = sr.ReadToEnd();    //获取json字符转,就是模板的那个形式  
  7.         JObject jo = JObject.Parse(strJson);//吧json字符串转化为json对象  
  8.         string message=jo["message"].ToString();//获取message属性(字段)的值  
  9.         JObject jo_msg = JObject.Parse(message);//把message转化为JObject对象  
  10.         //store_count  库存   price 价格  pro_name  名称  
  11.         string store_count = "0";  
  12.         string price = jo_msg["UNITPRICE"].ToString();//获取价格  
  13.   
  14.         string pro_name = jo_msg["PRODNAME"].ToString();//获取了商品名称  
  15.         //库存在规格信息中,规格信息是一个JArry数组,每一个元素仍是一个JObject对象  
  16.         //我们只需要遍历这个数据就行  
  17.         JArray ja = JArray.Parse(jo_msg["SPEC"].ToString());//把规格转化为数组对象  
  18.         int ja_length = ja.Count();//获取数组的长度  
  19.         for (int i = 0; i < ja_length;i++ )  
  20.         {  
  21.             JObject jo_temp =JObject.Parse(ja[i].ToString());//把每一个元素转化为JObject对象  
  22.             store_count = jo_temp["STORENUM"].ToString();    //获取了库存  
  23.         }  
  24.     }  
原理就是"层层剥取",其实这些就算是linq to json的部分功能了,在后面我会说使用Linq对json的查询.
宁夏银川舜新艺软件开发
ShunXinyi Soft develop
主要经营
软件开发,网站制作,网页设计,移动应用(安卓、苹果),微信,微网站,
FLASH动画,电子商务,计算机软硬件及网络设备等。
电话:18695132945 QQ:23923027
舜新艺软件开发 宁ICP备16001093号-1 宁公网安备 64010602000809号