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();
            }
        }
    }
    
  • 相关阅读:
    函数式语言(老师作业)
    session/cookie
    Linux根目录下各个目录的功能介绍
    Navicat12安装文件和破解补丁
    正则表达式验证示例
    RequestDispatcher接口示例
    hello2部分源码解析
    Introduction of Servlet Filter
    关于hello1中的web.xml解析
    Annotation解释
  • 原文地址:https://www.cnblogs.com/linecheng/p/4577282.html
Copyright © 2011-2022 走看看