C# 匿名类型序列化、反序列化

前言

现在提倡前后端分离,分离后服务全部采用接口的方式给前端提供服务,当我们处理自定义查询时必定会多表查询,而处理多表查询时我们又懒的去建view model,建的过多项目也凌乱的很,所以在dao层处理自定义查询时采用匿名类型返回json。

序列化、反序列化

 List<object> oData= new List<object>();
 oData.Add(new {ID=1,Name="kd",Age=31});
 oData.Add(new {ID=2,Name="kb",Age = 32 });

 string json = fastJSON.JSON.Instance.ToJSON(oData);

 Console.WriteLine(json);

oData = fastJSON.JSON.Instance.ToObject<List<dynamic>>(json);

 //从List<object>反序列化后用List<dynamic>接受,反序列化后用字典形式访问属性
foreach (dynamic o in oData)
 {
        Console.WriteLine(o["ID"]+","+o["Name"]);
 }

  

时间: 2024-10-14 10:45:39

C# 匿名类型序列化、反序列化的相关文章

EF 序列化实体为Json时的循环引用问题(不用自己写实体,不用匿名类型,不用EF的上下文属性)

自己写实体可以完美解决这个问题. 用匿名类型也可以. 设置上下文方法如下: (jz为数据库上下文对象) jz.Configuration.ProxyCreationEnabled = false;jz.Configuration.LazyLoadingEnabled = false; 不用这个的原因是Virtual属性也会生成.(只是占个位,[]里面没内容,但看着不爽) 我采用的方法是过滤掉Virtual属性的方法: 一个基于Json.net的类 public class LimitPropsC

动态类型和匿名类型在asp.net webapi中的应用

1.  动态类型用于webapi调用 假设需要调用一个webapi,webapi返回了一个json字符串.字符串如下: {"ProductId":"AN002501","ProductName":"XX洗衣粉","Description":"","UnitPrice":9.9} 问:如何获得json字符串中的值? 常规的做法是:先构建一个类,然后再使用JsonConv

protostuff序列化/反序列化

Protostuff是基于Google protobuff技术的Java版本,直接使用原生的protobuff是需要数据结构的预编译过程,需要编写.proto格式的配置文件,再通过protobuff提供的工具翻译成目标语言代码,而Protostuff动态支持了protobuff的预编译的过程,可以直接使用普通java POJO进行序列化,简化编码. 经过实测序列化性能相对原生protpbuff没有影响. 由于Protostuff只支持Java实现,不过并未对序列化格式有做任何修改,所以Proto

.net 序列化反序列化

.net 序列化创建对象的深拷贝 public static object DeepClone(object original) { using (MemoryStream stream = new MemoryStream()) { //构造序列化格式化器来执行所有实习工作 BinaryFormatter formatter = new BinaryFormatter(); //流上下文 formatter.Context = new StreamingContext(StreamingCon

看看这个超级实用的一种类型——匿名类型

既然说到匿名类型超级实用,得要找到场景来说服一下,如果大家玩过php,里面有一个万能的关联数组array,任你在关联数组array里面怎么写,都 可以用json_encode来生成json,非常非常的方便. <?php //可以这么写 $arr= array("name"=>"hxc","age"=20,"isMale"=>true); //也可以这么写 $arrayName = array("li

.NET序列化反序列化总结

一直想写这个专题,但是工作后人很懒散,总下不了决心,今天一个人在家就写下来. 关于序列化,可以总结出它的作用有以下几点: 1.记录应用程序的状态,在下次启动时还原上次的状态. 2.进程之间的通信,如使用socket编程时使用.这里的进程包括同一台主机之间进程的通信,也包括不同主机之间的通信. 3.作为对象的深拷贝的一种实现方式. .net中的序列化支持下面几种序列化机制: 1.使可序列化的类型序列化和反序列化 2.控制可序列化的类型的序列化/反序列化内容和过程 3.将类型序列化/反序列化为不同的

Linq专题之提高编码效率—— 第二篇 神一样的匿名类型

说起匿名类型,我们都知道这玩意都是为linq而生,而且匿名类型给我们带来的便利性大家在实战中应该都体会到了,特别适合于一次性使用,临时 使用这些场景,虽然说是匿名类型,也就是说是有类型的,只是匿名了而已,对吧,这篇我们就来探索下匿名类型到底和linq有多大关系呢??? 一:select中的匿名类型 这个我想大家用的是最多的,毕竟你select之后需要把原始数据重塑成另一种形状展示出来,不信你看嘛!!! 1 class Program 2 { 3 static void Main(string[]

10.8-全栈Java笔记:序列化/反序列化的步骤和实例

本节我们详细讲解10.3节中提到的序列化和反序列化操作. 序列化和反序列化是什么 当两个进程远程通信时,彼此可以发送各种类型的数据. 无论是何种类型的数据,都会以二进制序列的形式在网络上传送.比如,我们可以通过http协议发送字符串信息:我们也可以在网络上直接发送JAVA对象.发送方需要把这个Java对象转换为字节序列,才能在网络上传送:接收方则需要把字节序列再恢复为Java对象. 把Java对象转换为字节序列的过程称为对象的序列化.把字节序列恢复为Java对象的过程称为对象的反序列化. 对象序

.net 关于匿名类型的特性

匿名类型 1: var n1 = new { name = "name1", age = 40 }; 2: var n2 = new { name = "name2", age = 31 }; 3: var n3 = new { name = "name3", age = 32 }; 4: Console.WriteLine("{0} is {1} years old",n1.name,n1.age); 结合数组应用 var