已知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 = ,
- errorCount =
- }
- };
- }
- 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的结构封装的匿名对象
已知json类型根据类型封装集合的更多相关文章
- nSum “已知target再求和”类型题目总结:n-2重循环+left/right
Sum类的题目一般这样: input: nums[], target output: satisfied arrays/ lists/ number 拿到题目,首先分析: 1. 是几个数的sum 2. ...
- WCF 已知类型和泛型解析程序 KnownType
数据协定继承 已知类型和泛型解析程序 Juval Lowy 下载代码示例 自首次发布以来,Windows Communication Foundation (WCF) 开发人员便必须处理数据协定继承方 ...
- C# 序列化过程中的已知类型(Known Type)
WCF下的序列化与反序列化解决的是数据在两种状态之间的相互转化:托管类型对象和XML.由于类型定义了对象的数据结构,所以无论对于序列化还是反序列化,都必须事先确定对象的类型.如果被序列化对象或者被反序 ...
- WCF技术剖析之十三:序列化过程中的已知类型(Known Type)
原文:WCF技术剖析之十三:序列化过程中的已知类型(Known Type) [爱心链接:拯救一个25岁身患急性白血病的女孩[内有苏州电视台经济频道<天天山海经>为此录制的节目视频(苏州话) ...
- java基础 File与递归练习 使用文件过滤器筛选将指定文件夹下的小于200K的小文件获取并打印按层次打印(包括所有子文件夹的文件) 多层文件夹情况统计文件和文件夹的数量 统计已知类型的数量 未知类型的数量
package com.swift.kuozhan; import java.io.File; import java.io.FileFilter; /*使用文件过滤器筛选将指定文件夹下的小于200K ...
- C#在父窗口中调用子窗口的过程(无法访问已释放的对象)异常,不存在从对象类型System.Windows.Forms.DateTimePicker到已知的托管提供程序本机类型的映射。
一:C#在父窗口中调用子窗口的过程(无法访问已释放的对象)异常 其实,这个问题与C#的垃圾回收有关.垃圾回收器管 理所有的托管对象,所有需要托管数据的.NET语言(包括 C#)都受运行库的 垃圾回收器 ...
- windows服务器设置文件属性设置去掉隐藏已知文件类型的扩展名(即文件后缀名可见)
摘要: 1.文件后缀名不可见,系统运维过程容易发生同名不同后缀的文件操作混淆的情况 2.windows系统默认是文件后缀名不可见 3.所以需要更改一下配置. 4.操作步骤如下图: (1)点击组织-文件 ...
- WCF数据契约代理和已知类型的使用
using Bll; using System; using System.CodeDom; using System.Collections.Generic; using System.Collec ...
- WCF 之 已知类型(KnownType)
已知类型(Known types)允许在服务契约中使用多态的行为,在服务操作中暴露基本类型.将已知类型(known types)相关到基本类型(基类类型)自身;特定操作;整个服务契约采用属性声明或者配 ...
随机推荐
- SOA和NS区别
SOA是起始权威服务器,在该服务器上可以新增和删除记录; NS服务器是笔试哪些DNS服务器可以解析该域名; 对于一个域(如baidu.com)SOA只有一个NS可以有多个. NS服务器包含SOA,SO ...
- css3 javascript 实现菜单按钮特效
一个菜单按钮特效案例,简单的实现了动态效果. 代码效果预览地址: http://code.w3ctech.com/detail/2504 <div class="bar" i ...
- 今天工作遇到要发短信(ios)的功能,于是随手记录了一下
ios中发送短信有两种 1.程序外调用系统短信 2.程序内调用系统发短信 第一种比较简单,直接调用url就可以了 oc下的代码为 [[UIApplication sharedApplication] ...
- 我是怎么发现并解决项目页面渲染效率问题的(IE调试工具探查器的使用)
#我是怎么发现并解决项目页面渲染效率问题的(IE调试工具探查器的使用) ##背景 之前的项目中,有很多的登记页面,一般都有100-200甚至更加多的字段,而且还涉及到字典.日期及其他效果的显示,载入时 ...
- tensorflow-cnn
需要安装 python,numpy,tensorflow,运行代码即可. tensorflow很好装,用pip安装即可. 可以参照http://wiki.jikexueyuan.com/project ...
- 制作java可执行程序的方法
命令行方法: 1. 创建Manifest.txt文件,内容: Main-Class: com.mkyong.awt.AwtExample 2.打包所有的class,包括Manifest.txt文件: ...
- rqnoj-105-核电站问题-dp
刚刚发现一个问题..原来这个oj叫rqnoj不是rnqoj... 简单的状态转换~~ #include<stdio.h> #include<string.h> #include ...
- HDU 5754 Life Winner Bo (找规律and博弈)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5754 给你四种棋子,棋子一开始在(1,1)点,两个人B和G轮流按每种棋子的规则挪动棋子,棋子只能往右下 ...
- freemaker获取字符串长度
freemarker 判断字符串长度大于多少或者int变量大于多少,比较<#if "test"?length gt 2> 长度大于2</#if> 大于 ...
- ntdll.dll函数原型
/*NTDLL Base Functions*/NTSYSAPI NTSTATUS NTAPI NtAcceptConnectPort( OUT PHANDLE PortHandle, IN PVOI ...