已知json类型根据类型封装集合

1编写帮助类根绝url得到json

public static string Post(string url)
        {
            string strURL = url;

            //创建一个HTTP请求  
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(strURL);
            //Post请求方式  
            request.Method = "POST";
            //内容类型
            request.ContentType = "json";

            //设置参数,并进行URL编码  
            //虽然我们需要传递给服务器端的实际参数是JsonParas(格式:[{\"UserID\":\"0206001\",\"UserName\":\"ceshi\"}]),
            //但是需要将该字符串参数构造成键值对的形式(注:"paramaters=[{\"UserID\":\"0206001\",\"UserName\":\"ceshi\"}]"),
            //其中键paramaters为WebService接口函数的参数名,值为经过序列化的Json数据字符串
            //最后将字符串参数进行Url编码
            string paraUrlCoded = System.Web.HttpUtility.UrlEncode("paramaters");
            paraUrlCoded += "=" + System.Web.HttpUtility.UrlEncode("");

            byte[] payload;
            //将Json字符串转化为字节  
            payload = System.Text.Encoding.UTF8.GetBytes(paraUrlCoded);
            //设置请求的ContentLength   
            request.ContentLength = payload.Length;
            //发送请求,获得请求流  

            Stream writer;
            try
            {
                writer = request.GetRequestStream();//获取用于写入请求数据的Stream对象
            }
            catch (Exception)
            {
                writer = null;
                Console.Write("连接服务器失败!");
            }
            //将请求参数写入流
            writer.Write(payload, 0, payload.Length);
            writer.Close();//关闭请求流

            String strValue = "";//strValue为http响应所返回的字符流
            HttpWebResponse response;
            try
            {
                //获得响应流
                response = (HttpWebResponse)request.GetResponse();
            }
            catch (WebException ex)
            {
                response = ex.Response as HttpWebResponse;
            }

            Stream s = response.GetResponseStream();

            //服务器端返回的是一个XML格式的字符串,XML的Content才是我们所需要的Json数据

            StreamReader Reader = new StreamReader(s);

            strValue = Reader.ReadToEnd();//取出Content中的Json数据
            Reader.Close();
            s.Close();

            return strValue;//返回Json数据
        }

  2设定已知json类型

 public static dynamic GetJsonType(this int jsonType)
        {
            if ((int)JsonType.订单 == jsonType)
            {
                return new
                {
                    response = new
                    {
                        orderList = new
                        {
                            order = new[] { 
                    new { 
                        orderId = "", 
                        orderCode = "",
                        orderStatus = "",
                        orderAmount = "", 
                        productAmount = "", 
                        orderCreateTime = "", 
                        orderDeliveryFee = "", 
                        orderNeedInvoice = "", 
                        updateTime = "",
                        endUserId = "",
                        warehouseId = "", } }
                        },
                        totalCount = 0,
                        errorCount = 0
                    }
                };
            }
            if ((int)JsonType.订单详情 == jsonType)
            {
                return new
                {
                    response = new
                    {
                        orderInfo = new
                        {
                            orderDetail = new
                            {
                                orderId = "",
                                orderCode = "",
                                orderStatus = "",
                                orderAmount = "",
                                productAmount = "",
                                realAmount = "",
                                orderCreateTime = "",
                                orderDeliveryFee = "",
                                orderNeedInvoice = "",
                                goodReceiverName = "",
                                goodReceiverAddress = "",
                                goodReceiverProvince = "",
                                goodReceiverCity = "",
                                goodReceiverCounty = "",
                                goodReceiverPostCode = "",
                                goodReceiverPhone = "",
                                goodReceiverMoblie = "",
                                orderPaymentConfirmDate = "",
                                payServiceType = "",
                                orderPromotionDiscount = "",
                                deliverySupplierId = "",
                                merchantRemark = "",
                                updateTime = "",
                                orderCouponDiscount = "",
                                orderPlatformDiscount = "",
                                endUserId = "",
                                warehouseId = "",
                            }
                        },
                        orderItemList = new
                        {
                            orderItem = new[] 
                            { 
                                new
                                {
                                    id="",
                                    orderId="",
                                    orderItemAmount = "",
                                    orderItemNum = "",
                                    orderItemPrice = "",
                                    productCName = "",
                                    productId = "",
                                    originalPrice = "",
                                    merchantId = "",
                                    updateTime = "",
                                    groupFlag = "",
                                    deliveryFeeAmount = "",
                                    promotionAmount = "",
                                    couponAmountMerchant = "",
                                    couponPlatformDiscount = "",
                                    subsidyAmount = "",
                                }
                            }
                        }
                    }
                };
            }
            return null;
        }

3调用

var text = GetJson.Post("http://localhost:7822/SaleOrders/Read");
            var type = ((int)JsonType.订单).GetJsonType();
            var obj = JsonConvert.DeserializeAnonymousType(text, type);

上面的结果”obj“就是我们根据json的结构封装的匿名对象

posted @ 2015-03-18 17:29  流浪的狸猫  阅读(680)  评论(0编辑  收藏  举报