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

  1. public static string Post(string url)
  2. {
  3. string strURL = url;
  4.  
  5. //创建一个HTTP请求
  6. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(strURL);
  7. //Post请求方式
  8. request.Method = "POST";
  9. //内容类型
  10. request.ContentType = "json";
  11.  
  12. //设置参数,并进行URL编码
  13. //虽然我们需要传递给服务器端的实际参数是JsonParas(格式:[{\"UserID\":\"0206001\",\"UserName\":\"ceshi\"}]),
  14. //但是需要将该字符串参数构造成键值对的形式(注:"paramaters=[{\"UserID\":\"0206001\",\"UserName\":\"ceshi\"}]"),
  15. //其中键paramaters为WebService接口函数的参数名,值为经过序列化的Json数据字符串
  16. //最后将字符串参数进行Url编码
  17. string paraUrlCoded = System.Web.HttpUtility.UrlEncode("paramaters");
  18. paraUrlCoded += "=" + System.Web.HttpUtility.UrlEncode("");
  19.  
  20. byte[] payload;
  21. //将Json字符串转化为字节
  22. payload = System.Text.Encoding.UTF8.GetBytes(paraUrlCoded);
  23. //设置请求的ContentLength
  24. request.ContentLength = payload.Length;
  25. //发送请求,获得请求流
  26.  
  27. Stream writer;
  28. try
  29. {
  30. writer = request.GetRequestStream();//获取用于写入请求数据的Stream对象
  31. }
  32. catch (Exception)
  33. {
  34. writer = null;
  35. Console.Write("连接服务器失败!");
  36. }
  37. //将请求参数写入流
  38. writer.Write(payload, 0, payload.Length);
  39. writer.Close();//关闭请求流
  40.  
  41. String strValue = "";//strValue为http响应所返回的字符流
  42. HttpWebResponse response;
  43. try
  44. {
  45. //获得响应流
  46. response = (HttpWebResponse)request.GetResponse();
  47. }
  48. catch (WebException ex)
  49. {
  50. response = ex.Response as HttpWebResponse;
  51. }
  52.  
  53. Stream s = response.GetResponseStream();
  54.  
  55. //服务器端返回的是一个XML格式的字符串,XML的Content才是我们所需要的Json数据
  56.  
  57. StreamReader Reader = new StreamReader(s);
  58.  
  59. strValue = Reader.ReadToEnd();//取出Content中的Json数据
  60. Reader.Close();
  61. s.Close();
  62.  
  63. return strValue;//返回Json数据
  64. }

  2设定已知json类型

  1. public static dynamic GetJsonType(this int jsonType)
  2. {
  3. if ((int)JsonType.订单 == jsonType)
  4. {
  5. return new
  6. {
  7. response = new
  8. {
  9. orderList = new
  10. {
  11. order = new[] {
  12. new {
  13. orderId = "",
  14. orderCode = "",
  15. orderStatus = "",
  16. orderAmount = "",
  17. productAmount = "",
  18. orderCreateTime = "",
  19. orderDeliveryFee = "",
  20. orderNeedInvoice = "",
  21. updateTime = "",
  22. endUserId = "",
  23. warehouseId = "", } }
  24. },
  25. totalCount = ,
  26. errorCount =
  27. }
  28. };
  29. }
  30. if ((int)JsonType.订单详情 == jsonType)
  31. {
  32. return new
  33. {
  34. response = new
  35. {
  36. orderInfo = new
  37. {
  38. orderDetail = new
  39. {
  40. orderId = "",
  41. orderCode = "",
  42. orderStatus = "",
  43. orderAmount = "",
  44. productAmount = "",
  45. realAmount = "",
  46. orderCreateTime = "",
  47. orderDeliveryFee = "",
  48. orderNeedInvoice = "",
  49. goodReceiverName = "",
  50. goodReceiverAddress = "",
  51. goodReceiverProvince = "",
  52. goodReceiverCity = "",
  53. goodReceiverCounty = "",
  54. goodReceiverPostCode = "",
  55. goodReceiverPhone = "",
  56. goodReceiverMoblie = "",
  57. orderPaymentConfirmDate = "",
  58. payServiceType = "",
  59. orderPromotionDiscount = "",
  60. deliverySupplierId = "",
  61. merchantRemark = "",
  62. updateTime = "",
  63. orderCouponDiscount = "",
  64. orderPlatformDiscount = "",
  65. endUserId = "",
  66. warehouseId = "",
  67. }
  68. },
  69. orderItemList = new
  70. {
  71. orderItem = new[]
  72. {
  73. new
  74. {
  75. id="",
  76. orderId="",
  77. orderItemAmount = "",
  78. orderItemNum = "",
  79. orderItemPrice = "",
  80. productCName = "",
  81. productId = "",
  82. originalPrice = "",
  83. merchantId = "",
  84. updateTime = "",
  85. groupFlag = "",
  86. deliveryFeeAmount = "",
  87. promotionAmount = "",
  88. couponAmountMerchant = "",
  89. couponPlatformDiscount = "",
  90. subsidyAmount = "",
  91. }
  92. }
  93. }
  94. }
  95. };
  96. }
  97. return null;
  98. }

3调用

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

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

已知json类型根据类型封装集合的更多相关文章

  1. nSum “已知target再求和”类型题目总结:n-2重循环+left/right

    Sum类的题目一般这样: input: nums[], target output: satisfied arrays/ lists/ number 拿到题目,首先分析: 1. 是几个数的sum 2. ...

  2. WCF 已知类型和泛型解析程序 KnownType

    数据协定继承 已知类型和泛型解析程序 Juval Lowy 下载代码示例 自首次发布以来,Windows Communication Foundation (WCF) 开发人员便必须处理数据协定继承方 ...

  3. C# 序列化过程中的已知类型(Known Type)

    WCF下的序列化与反序列化解决的是数据在两种状态之间的相互转化:托管类型对象和XML.由于类型定义了对象的数据结构,所以无论对于序列化还是反序列化,都必须事先确定对象的类型.如果被序列化对象或者被反序 ...

  4. WCF技术剖析之十三:序列化过程中的已知类型(Known Type)

    原文:WCF技术剖析之十三:序列化过程中的已知类型(Known Type) [爱心链接:拯救一个25岁身患急性白血病的女孩[内有苏州电视台经济频道<天天山海经>为此录制的节目视频(苏州话) ...

  5. java基础 File与递归练习 使用文件过滤器筛选将指定文件夹下的小于200K的小文件获取并打印按层次打印(包括所有子文件夹的文件) 多层文件夹情况统计文件和文件夹的数量 统计已知类型的数量 未知类型的数量

    package com.swift.kuozhan; import java.io.File; import java.io.FileFilter; /*使用文件过滤器筛选将指定文件夹下的小于200K ...

  6. C#在父窗口中调用子窗口的过程(无法访问已释放的对象)异常,不存在从对象类型System.Windows.Forms.DateTimePicker到已知的托管提供程序本机类型的映射。

    一:C#在父窗口中调用子窗口的过程(无法访问已释放的对象)异常 其实,这个问题与C#的垃圾回收有关.垃圾回收器管 理所有的托管对象,所有需要托管数据的.NET语言(包括 C#)都受运行库的 垃圾回收器 ...

  7. windows服务器设置文件属性设置去掉隐藏已知文件类型的扩展名(即文件后缀名可见)

    摘要: 1.文件后缀名不可见,系统运维过程容易发生同名不同后缀的文件操作混淆的情况 2.windows系统默认是文件后缀名不可见 3.所以需要更改一下配置. 4.操作步骤如下图: (1)点击组织-文件 ...

  8. WCF数据契约代理和已知类型的使用

    using Bll; using System; using System.CodeDom; using System.Collections.Generic; using System.Collec ...

  9. WCF 之 已知类型(KnownType)

    已知类型(Known types)允许在服务契约中使用多态的行为,在服务操作中暴露基本类型.将已知类型(known types)相关到基本类型(基类类型)自身;特定操作;整个服务契约采用属性声明或者配 ...

随机推荐

  1. SOA和NS区别

    SOA是起始权威服务器,在该服务器上可以新增和删除记录; NS服务器是笔试哪些DNS服务器可以解析该域名; 对于一个域(如baidu.com)SOA只有一个NS可以有多个. NS服务器包含SOA,SO ...

  2. css3 javascript 实现菜单按钮特效

    一个菜单按钮特效案例,简单的实现了动态效果. 代码效果预览地址: http://code.w3ctech.com/detail/2504 <div class="bar" i ...

  3. 今天工作遇到要发短信(ios)的功能,于是随手记录了一下

    ios中发送短信有两种 1.程序外调用系统短信 2.程序内调用系统发短信 第一种比较简单,直接调用url就可以了 oc下的代码为 [[UIApplication sharedApplication] ...

  4. 我是怎么发现并解决项目页面渲染效率问题的(IE调试工具探查器的使用)

    #我是怎么发现并解决项目页面渲染效率问题的(IE调试工具探查器的使用) ##背景 之前的项目中,有很多的登记页面,一般都有100-200甚至更加多的字段,而且还涉及到字典.日期及其他效果的显示,载入时 ...

  5. tensorflow-cnn

    需要安装 python,numpy,tensorflow,运行代码即可. tensorflow很好装,用pip安装即可. 可以参照http://wiki.jikexueyuan.com/project ...

  6. 制作java可执行程序的方法

    命令行方法: 1. 创建Manifest.txt文件,内容: Main-Class: com.mkyong.awt.AwtExample 2.打包所有的class,包括Manifest.txt文件: ...

  7. rqnoj-105-核电站问题-dp

    刚刚发现一个问题..原来这个oj叫rqnoj不是rnqoj... 简单的状态转换~~ #include<stdio.h> #include<string.h> #include ...

  8. HDU 5754 Life Winner Bo (找规律and博弈)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5754 给你四种棋子,棋子一开始在(1,1)点,两个人B和G轮流按每种棋子的规则挪动棋子,棋子只能往右下 ...

  9. freemaker获取字符串长度

    freemarker 判断字符串长度大于多少或者int变量大于多少,比较<#if "test"?length gt 2>    长度大于2</#if> 大于 ...

  10. ntdll.dll函数原型

    /*NTDLL Base Functions*/NTSYSAPI NTSTATUS NTAPI NtAcceptConnectPort( OUT PHANDLE PortHandle, IN PVOI ...