JSON,JSON多级数组.NET接收转成字符串DataTable或者DataSet

1 篇文章 0 订阅

我是个特别懒的人啊,也是个小渣渣,但以后得养成写博客得习惯了,好了,废话不多说,直接上代码,中心思想自己领会啊。
json 串样例:
在这里插入图片描述

 {"FAG": "1",
 "RET": 
 {"Air_Data":[
  {
    "AIRLINE": "CA",
    "FULL_PRICE": "1280",
    "SHARE_FLIGHT_NO": "",
    "Seats": [
      {
        "SEAT": "S1",
        "SEAT_GRADE": "Y",
        "FUEL_PRICE": "0",
        "SIGN_REFOUND": {
          "SIGN": "测试"
        },
        "SEATS_COUNT": "A"
      },
      {
        "SEAT": "S1",
        "SEAT_GRADE": "Y",
        "FUEL_PRICE": "0",
        "SIGN_REFOUND": {
          "SIGN": "测试"
        },
        "SEATS_COUNT": "8"
      }
    ]
  }
],"Code":"200"},"Error": ""}

这种json串有多层关系,所以在建立实体类得时候,最简单得方式就是按照这个json格式去做,字符串,List集合等。

实体样例:(不明白得仔细对比上面得json数组,从最里面得小对象往最外层对比)

public class TestClass
    {
        [Serializable]
        public class SIGN_REFOUND
        {
            public string SIGN { get; set; }
        }
    [Serializable]
    public class SeatsItem
    {
        public string SEAT { get; set; }
        public string SELL_PRICE { get; set; }
        public string SIGN_REFOUND { get; set; }
        public string FUEL_PRICE { get; set; }
        public SIGN_REFOUND SIGN_REFOUND { get; set; }
        public string SEATS_COUNT { get; set; }
    }

    [Serializable]
    public class Air_DataItem
    {
        public string AIRLINE { get; set; }
        public string FULL_PRICE { get; set; }
        public string SHARE_FLIGHT_NO { get; set; }
        public List<SeatsItem> Seats { get; set; }
    }

    [Serializable]
    public class RET
    {
        public List<Air_DataItem> Air_Data { get; set; }
        public string Code { get; set; }
        public List<SeatsItem> Seats { get; set; }
    }

    [Serializable]
    public class Root
    {
        public string FAG { get; set; }
        public RET RET { get; set; }
        public string Error { get; set; }
        public List<Air_DataItem> Air_Data { get; set; }
        public List<SeatsItem> Seats { get; set; }
    }
}

方法样例:
关键两句代码,反序列化

 System.Web.Script.Serialization.JavaScriptSerializer js = new System.Web.Script.Serialization.JavaScriptSerializer();
             newExWebService.Model.TestClass.Root jsonAir_DataItem = js.Deserialize<newExWebService.Model.TestClass.Root>(jsonStr);

测试代码

        [WebMethod(Description = "test")]
        public string test(String jsonStr)
        {
             System.Web.Script.Serialization.JavaScriptSerializer js = new System.Web.Script.Serialization.JavaScriptSerializer();
             newExWebService.Model.TestClass.Root jsonAir_DataItem = js.Deserialize<newExWebService.Model.TestClass.Root>(jsonStr);
             List<newExWebService.Model.TestClass.Air_DataItem> airlist = jsonAir_DataItem.RET.Air_Data;
             String resultStr = "";
             int flag =0;
             //第一层
             String FAG = jsonAir_DataItem.FAG;
             Object RET = jsonAir_DataItem.RET;
            //第二层
            foreach (newExWebService.Model.TestClass.Air_DataItem item in airlist)
            {
                String AIRLINE = item.AIRLINE;
                String FULL_PRICE = item.FULL_PRICE;
                String SHARE_FLIGHT_NO = item.SHARE_FLIGHT_NO;
                //第三层
                List<newExWebService.Model.TestClass.SeatsItem> SeatsItemlist = item.Seats;
                foreach (newExWebService.Model.TestClass.SeatsItem seatitem in SeatsItemlist)
                {
                    String SEAT = seatitem.SEAT;
                    String SEAT_CN = seatitem.SELL_PRICE;
                    String FUEL_PRICE = seatitem.FUEL_PRICE;
                   //第四层
                    String SIGN = seatitem.SIGN_REFOUND.SIGN;
                    flag++;
                    resultStr += "第" + flag + "条:" + "SEAT:" + SEAT + "SEAT_CN:" + SEAT_CN + SIGN +  "\r\n";
               
                }
            }
            return "共计" + flag + "条数据," + resultStr;
     }

到这里,json得数据已经都可以解析出来了,其他你想做什么操作都可以,转成DataTable或者DataSet,大概就是new DataTable();然后创建DataRow循环往DataTable里面填充值就好了。

												--Author:小北
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值