已知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)相关到基本类型(基类类型)自身;特定操作;整个服务契约采用属性声明或者配 ...
随机推荐
- IOS init initWith 等相关集中
1.initWithCoder 当一个view从nib初始化的时候,会调用这个函数. 用keyedArchiver序列化一个类的实力,后面用keyedUnArchiver拿回来的时候会调用到 ...
- 国内外开源与 SaaS ,团队协作平台、项目管理工具整理
整理一些开源与 SaaS ,团队协作平台.项目管理工具.还有哪些比较好的工具,可以推荐下? 名称 地址 备注 asana https://asana.com/ 国外 basecamp https:// ...
- 浏览器URL传参最大长度问题
这几天为解决一个BUG头疼了一段时间,BUG现象如下: 一个选择人员的选择控件,当选择多个人时(50多个的时候),返回没有错误现象,而再一次打开的时候就报404错误.看到这个错误非常纳闷,无法下手,只 ...
- 【windows核心编程】DLL相关(1)
DLL相关的东西 1.DLL的加载方式 隐式: #pragma comment(lib, "XX.lib"); 编译器去查找名为XX.dll的DLL,除了名字相同,该DLL和该LI ...
- Libsvm的MATLAB调用和交叉验证
今天听了一个师兄的讲课,才发现我一直在科研上特别差劲,主要表现在以下几个方面,(现在提出也为了督促自己在以后的学习工作道路上能够避免这些问题) 1.做事情总是有头无尾,致使知识点不能一次搞透,每次在用 ...
- 常用的CSS Hack技术集锦
来源:http://www.ido321.com/938.html 一.什么是CSS Hack? 不同的浏览器对CSS的解析结果是不同的,因此会导致相同的CSS输出的页面效果不同,这就需要CSS Ha ...
- bzoj 3439 Kpm的MC密码(Trie+dfs序+主席树)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3439 [题意] 给定若干串,问一个串的作为其后缀的给定串集合中的第k小. [思路] 如 ...
- bfs CCF2016第七次 游戏
// bfs CCF2016第七次 游戏 // 思路: // O(300*100*100) // 直接暴搜 // 注意,同一格同一时间不能经过两次!!! #include <bits/stdc+ ...
- Java-note-输入流
java不像C中拥有scanf这样功能强大的函数,大多是通过定义输入输出流对象.常用的类有BufferedReader,Scanner.实例程序:一,利用 Scanner 实现从键盘读入integer ...
- 用原生javascript模拟经典FC游戏公路争霸
#用原生javascript模拟经典FC游戏公路争霸 前几天看了园子里面的随笔 [原生javascript开发仿微信打飞机小游戏](http://www.cnblogs.com/Mr-Nobody/p ...