C#匿名类型和动态解析减少定义传输类模板
C#作为强类型语言,在序列化和反序列化(json)场景中对字符串解析常常需要定义强类型模板,造成编码上的繁琐。其实可以使用匿名类型和动态解析减少json序列化时候的数据模板定义;
string a = "1";
bool b = true;
double c = 123;
var d = new { a, b, c };
var o = new { a, b ,c,d};
var s = JsonConvert.SerializeObject(o);
Console.WriteLine(s); dynamic o2 = JsonConvert.DeserializeObject(s); string a1 = o2.a;
bool b1 = Convert.ToBoolean(o2.b);
double c1 = Convert.ToDouble(o2.c);
string a2 = o2.d.a; Console.WriteLine(a1);
Console.WriteLine(b1);
Console.WriteLine(c1);
Console.WriteLine(a2);
C#匿名类型和动态解析减少定义传输类模板的更多相关文章
- 《精通C#》自定义类型转化-扩展方法-匿名类型-指针类型(11.3-11.6)
1.类型转化在C#中有很多,常用的是int类型转string等,这些都有微软给我们定义好的,我们需要的时候直接调用就是了,这是值类型中的转化,有时候我们还会需要类类型(包括结构struct)的转化,还 ...
- jsoncpp动态解析节点类型
在互联网无处不在的今天,JSON作为轻量级数据存储格式,被广泛应用到互联网数据传输中.众所周知,JSON由键/值对.对象.数组组成,其中键/值对的值包括以下几种类型: enum ValueType { ...
- 当匿名类型遇上Distinct
首先定义一个简单类,并重写ToString方法. public class CommidityFilter { public string Property { get; set; } public ...
- C#编程(十六)----------匿名类型
匿名类型 var和new关键字一起使用,可以创建匿名类型. 匿名类型提供了一种方便的方法,可用来将一组只读属性封装到单个对象中,而无需首先显式定义一个类型. 类型名由编译器生成,并且不能在源代码级使用 ...
- C#3.0新增功能02 匿名类型
连载目录 [已更新最新开发文章,点击查看详细] 匿名类型提供了一种方便的方法,可用来将一组只读属性封装到单个对象中,而无需首先显式定义一个类型. 类型名由编译器生成,并且不能在源代码级使用. 每 ...
- 编写高质量代码改善C#程序的157个建议——建议26:使用匿名类型存储LINQ查询结果
建议26:使用匿名类型存储LINQ查询结果 从.NET3.0开始,C#开始支持一个新特性:匿名类型.匿名类型有var.赋值运算符和一个非空初始值(或以new开头的初始化项)组成.匿名类型有如下基本特性 ...
- 不可或缺 Windows Native (19) - C++: 对象的动态创建和释放, 对象的赋值和复制, 静态属性和静态函数, 类模板
[源码下载] 不可或缺 Windows Native (19) - C++: 对象的动态创建和释放, 对象的赋值和复制, 静态属性和静态函数, 类模板 作者:webabcd 介绍不可或缺 Window ...
- C++解析(26):函数模板与类模板
0.目录 1.函数模板 1.1 函数模板与泛型编程 1.2 多参数函数模板 1.3 函数重载遇上函数模板 2.类模板 2.1 类模板 2.2 多参数类模板与特化 2.3 特化的深度分析 3.小结 1. ...
- C#简单问题,不简单的原理:不能局部定义自定义类型(不含匿名类型)
今天在进行代码测试时发现,尝试在一个方法中定义一个委托,注意是定义一个委托,而不是声明一个委托变量,在编写的时候没有报错,VS也能智能提示,但在编译时却报语法不完整,缺少方括号,但实际查询并没有缺少, ...
随机推荐
- xmoj142
https://code.mi.com/problem/list/view?id=142 暴力. #include <bits/stdc++.h> using namespace std; ...
- css边框渐变
在实际开发中,我们经常遇见边框需要背景渐变的实现要求,那么如何去实现呢,今天给大家分享依稀几种情况 1.直角的背景渐变 <!DOCTYPE html> <html lang=&quo ...
- XML自学笔记
1. xml指可扩展标记语言,(extensible markup language),该语言被设计用来传输和存储数据,HTML被设计用来显示数据 XML标签没有被预定义,需要自定义标签:XML ...
- 如何将两个PDF文件合并到一个页面中
在目前职场办公中,很多使用的文件格式是PDF文件格式,由于工作的需要,经常需要将PDF文件合并在一起,但由于PDF文件不能直接编辑修改,不能OFFICE,WPS那样,通过复制粘贴将两者合并,那如何解决 ...
- poj1164
#include<iostream> using namespace std; ][]; ][]; int roomnum; int maxroom; int m,n; typedef s ...
- 洛谷P4051 字符加密 [JSOI2007] SA
正解:SA 解题报告: 传送门! 和工艺那题有点儿像鸭,,,反正肯定就都想到倍长然后SA拍个序嘛先 然后就做完了,,,我发现SA的题刷起来特别susi,,,基本上紫题级别的都just一个模板就欧克了最 ...
- Django---框架简介和工程搭建
Django框架 一.Django介绍 二.Django工程搭建 回到顶部 一.Django介绍 1.简介 Django的主要目的是简便.快速的开发数据库驱动的网站.它强调代码复用,多个组件可以 ...
- TCP/IP协议 数据链路层
以太网 1.以太网(Ethernet)是一种计算机局域网技术,由Xerox.Intel公司在1982年联合开发的技术规范. 2.IEEE组织的IEEE 802.3标准制定了以太网的技术标准,它规定了包 ...
- MyBatis基本使用
MyBatis是轻量级的数据库访问API,封装了JDBC操作,可以实现对实体对象的CRUD操作. MyBatis体系结构主要组成部分: 配置文件:SqlMapConfig.xml 主配置文件 ...
- VMware虚拟机共享宿主机硬盘步骤
1.打开设置 2. 进去设置后,选择选项选项卡,启用文件夹共享,添加文件夹即可 注:虚拟机安装完成后我先装了 VMwareTools,然后进行的共享操作,貌似不安装时无法启用第三步,即 总是启用 按钮 ...