动态类型dynamic转换为特定类型T的方案
需求场景:有时候我们抓到一段请求数据,JSON格式的字符串数据,需要放在接口里重现问题,我们就可能会用dynamic先接受数据,然后再转换成特定数据发出请求。
方案一:直接使用特定对象T,来接受请求数据,不可以吗? 当然可以,不过当JSON数据包含子对象时,我遇到了子数据对象丢失的问题。如果你们没有遇到,可以使用。
方案二:使用字符串接受JSON格式的字符串数据,然后反序列化成对象,不过这个你需要对字符串进行处理,加反斜杠,如果你不嫌麻烦,可以使用。
方案三:我个人推荐:使用dynamic类型先接受数据,然后再转换成T对象,比较方便,实用,下面是关键代码:
思路:使用dynamic.ToString()方法,得到Json的字符串,然后使用反序列化方法,可以避免方案一的数据丢失问题。好用!!!推荐!!!
/// <summary>
/// 模拟请求
/// </summary>
/// <param name="fromBody">接收响应结果为加密之后的值</param>
/// <returns>得到解密之后返回的响应结果值</returns>
[HttpPost]
public HttpResponseMessage Test(dynamic fromBody)//dynamic JObject
{
string a = fromBody.ToString();
T t= Newtonsoft.Json.JsonConvert.DeserializeObject<T>(a); return result;
}
动态类型dynamic转换为特定类型T的方案的更多相关文章
- Asp.Net SignalR 使用记录 技术回炉重造-总纲 动态类型dynamic转换为特定类型T的方案 通过对象方法获取委托_C#反射获取委托_ .net core入门-跨域访问配置
Asp.Net SignalR 使用记录 工作上遇到一个推送消息的功能的实现.本着面向百度编程的思想.网上百度了一大堆.主要的实现方式是原生的WebSocket,和SignalR,再次写一个关于A ...
- C# 把字符串类型日期转换为日期类型(转载)
C# 把字符串类型日期转换为日期类型 来源:https://www.cnblogs.com/raincedar/p/7009243.html 方法一:Convert.ToDateTime(stri ...
- springMvc把client传过来一个String类型,转换为日期类型为例
springMvc--接受日期类型参数处理 目录 步骤 2.自定义类型转换规则 3.注册自定义的类型转换类 4.地址栏访问 这个问题,也即是springMvc如何进行参数类型的转换 , 以把cli ...
- float类型如何转换为string类型
在一些很大的float类型的地方会用科学记数法表示,这个时候如果想完整记录下来,还是得转字符串,这里书写一个float类型转string类型的方法 <?php function float_to ...
- 数据库中varchar类型数据转换为numeric类型
numeric有好几种选择,有整形.小数型等等.都是用cast来实现 前提:A表的ID字段是VARCHAR类型 .SELECT CAST(ID AS INTEGER) FROM A .SELECT C ...
- 将yyyyMMdd,dd/MM/yyyy 类型字符串转换为datetime 类型 yyyy-MM-dd C#
DateTime ConvertDate = DateTime.ParseExact(", "yyyyMMdd", null, System.Globalization. ...
- c# yyyyMMdd,dd/MM/yyyy 类型字符串转换为datetime 类型
DateTime ConvertDate = DateTime.ParseExact("20140504", "yyyyMMdd", null, System. ...
- C# 把字符串类型日期转换为日期类型
方法一:Convert.ToDateTime(string) string格式有要求,必须是yyyy-MM-dd hh:mm:ss ================================== ...
- Input标签_实现限制输入字符类型(只能输入特定类型字符)
... <input type="text" placeholder="密码" maxlength="20" onKeyPress=& ...
随机推荐
- [译]Vulkan教程(02)概况
[译]Vulkan教程(02)概况 这是我翻译(https://vulkan-tutorial.com)上的Vulkan教程的第2篇. This chapter will start off with ...
- Python 变量与运算符
变量 基本概念: 1. 变量,名字,数据的唯一标识2.变量命名: 字母.数字.下划线: 不能以数字开头: 区分大小写: 不能使用保留字和关键字: 命名要有意义:(多个单词时,推荐使用下划线连接) 3. ...
- Linux中fuser命令用法详解
描述: fuser可以显示出当前哪个程序在使用磁盘上的某个文件.挂载点.甚至网络端口,并给出程序进程的详细信息. fuser显示使用指定文件或者文件系统的进程ID. 默认情况下每个文件名后面跟一个字母 ...
- APP自动化针对PO模式进行二次封装之basepage
APP自动化跟WEB自动化所使用的框架基本一样,都是采用的PO模式结合pytest框架编写自动化测试脚本,为了提高代码的复用性.稳定性和易维护性,我们针对PO模式进行了二次封装,将日志,等待以及异常截 ...
- koa2 从入门到进阶之路 (六)
之前的文章我们介绍了一下 koa post提交数据及 koa-bodyparser中间件,本篇文章我们来看一下 koa-static静态资源中间件. 我们在之前的目录想引入外部的 js,css,img ...
- 漫谈golang设计模式 简易工厂模式
目前学习golang的主要需求是为了看懂TiDB的源码,下面我们复习一下简易工厂模式的思想 工厂类型分为三种,创建型模式,结构型模式,行为型模式. 简单工厂 使用场景:考虑一个简单的API设计,一个模 ...
- JNDI学习总结(一)——JNDI数据源的配置
原文地址:http://www.cnblogs.com/xdp-gacl/p/3951952.html 一.数据源的由来 在Java开发中,使用JDBC操作数据库的四个步骤如下: ①加载数据库驱动 ...
- 关于xshell连接limux界面按上下左右方向键出现ABCD的问题
这个问题有两种可能: 1.一种是由于当前用户使用的shell是/bin/sh的原因.在添加用户的时候没有添加用户的指定shell类型,因此默认为/bin/sh. 可以用如下命令查看当前用户的shell ...
- Linux-3.14.12内存管理笔记【伙伴管理算法(2)】
前面已经分析了linux内存管理算法(伙伴管理算法)的准备工作. 具体的算法初始化则回到start_kernel()函数接着往下走,下一个函数是mm_init(): [file:/init/main. ...
- 0day2安全——笔记1
第一章 PE和内存之间的映射 节偏移 文件偏移地址(File Offset Address):数据在PE文件中的地址 装载地址(Image Base):PE装入内存的基地址 虚拟内存地址(Virtua ...