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

时间:2022-11-08 22:38:35

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类型根据类型封装集合的更多相关文章

  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的小文件获取并打印按层次打印&lpar;包括所有子文件夹的文件&rpar; 多层文件夹情况统计文件和文件夹的数量 统计已知类型的数量 未知类型的数量

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

  6. C&num;在父窗口中调用子窗口的过程&lpar;无法访问已释放的对象&rpar;异常,不存在从对象类型System&period;Windows&period;Forms&period;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. 我们应当怎样学习HTML和CSS

    目标读者:web前端小白.大神请绕路 学习一门新技术,应当找一本经典入门书,在两三天之内快速翻阅完毕,了解其概貌. 然后再制定一个学习路线图(这个路线图绝大多数情况下非书本目录的顺序),接着遵循学习路 ...

  2. curl post方法

    * [curl_post curl post方式请求接口] * @param [type] $url [接口的url] * @param [type] $data [传递的参数] * @return ...

  3. HDU 5007 Post Robot KMP &lpar;ICPC西安赛区网络预选赛 1001&rpar;

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5007 解题报告:输入一篇文章,从头开始,当遇到 “Apple”, “iPhone”, “iPod”, ...

  4. 深入浅出设计模式——工厂方法模式(Factory Method)

    介绍在简单工厂模式中,我们提到,工厂方法模式是简单工厂模式的一个延伸,它属于Gof23中设计模式的创建型设计模式.它解决的仍然是软件设计中与创建对象有关的问题.它可以更好的处理客户的需求变化. 引入我 ...

  5. 并行编程之CountdownEvent的用法

    教程:http://blog.gkarch.com/threading/part5.html#the-parallel-class http://www.cnblogs.com/huangxinche ...

  6. 继承Animation

    package cativity.cyq.alphaanimal; import android.view.animation.Animation; import android.view.anima ...

  7. javascript 数据结构和算法读书笔记 &gt&semi; 第四章 栈

    1. 对栈的操作 栈是一种特殊的列表,栈中的元素只能通过列表的一端进行访问,即栈顶.类似于累起一摞的盘子,只能最后被放在上面的,最先能被访问到. 就是我们所说的后入先出(LIFO). 对栈主要有入栈p ...

  8. &lbrack;Android学习笔记&rsqb;获取view的尺寸和坐标

    对于UI方面很多时候需要获取它的很多信息,具体情况见view的文档 View文档 http://developer.android.com/training/index.html 常用方法:获取vie ...

  9. Java基础总结--流程控制

    Java流程控制* 顺序结构--最常见的执行情况,语句按照出现的先后次序依次执行.* 判断结构--对条件进行判断,执行相应的语句.有三种常见的形式< if(判断条件){语句;}--为真执行语句, ...

  10. 菜鸟玩云计算之二十:saltstack入门初步

    菜鸟玩云计算之二十 SaltStack 入门初步 0. saltstack 是什么 参考下面的文章: http://docs.saltstack.com/en/latest/topics/tutori ...