zoukankan      html  css  js  c++  java
  • Dynamic系列--Dynamic 与反序列化

    通常在调用其他站点的api时,如果返回的结果为 json数据,而我们又不想再重新定义实体类时,可以使用dynamic类型。
    但是有以下需要注意的地方。

    • 当内容为空时,反序列化结果为null
    • 当内容格式有误,不可反序列化时,将会抛出异常。
    • 内容正确时,得到的对象是 Dictionary<string,object> ( 为什么不是真正的dynamic,这里究竟发生了什么?需要后期研究 )
    • 如果是数组,则得到的对象是 object[] 每个object为Dictionary<string,object>。

    且看如下代码

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Web.Mvc;
    using System.Web.Script.Serialization;
    
    namespace ConAppTestJavaScriptSerilazation
    {
        class Program
        {
            static void Main(string[] args)
            {
    
                //反序列化 返回结果为 object  真是类型是Dictionary<string,object>
                var content0 = @"{name:'cjt',age:10}";
                var res0 = new JavaScriptSerializer().Deserialize<dynamic>(content0);
    
                //反序列化 返回结果为 object[] 每个object实际上是一个Dictionary<string,object>类型
                var content1= @"[
                                    {name:'cjt',age:10},
                                    {name:'cjt2',age:21},
                                    {name:'cjtc',age:16}
                                ]";
                var res1 = new JavaScriptSerializer().Deserialize<dynamic>(content1);
    
    
                //当内容为空时,反序列化返回结果为NULL
                var content2 = "";
                var res2 = new JavaScriptSerializer().Deserialize<dynamic>(content2);
    
                Console.ReadLine();
            }
        }
    }
    
  • 相关阅读:
    [抄书]The Pipes and Filters pattern
    [抄书]The Layers pattern
    OpenGL Step by Step (1)
    [HOOPS]二维点向三维空间投影
    心仪已久的工具:BoundsChecker v7.2
    [HOOPS]用HC_Show_...获取正确的点的坐标位置
    小试zlib
    XML (2) Document Type Definitions (DTD)
    UML (1) 设计模式及作业附图
    XML (1) 什么是XML
  • 原文地址:https://www.cnblogs.com/linecheng/p/4577282.html
Copyright © 2011-2022 走看看