zoukankan      html  css  js  c++  java
  • C#序列化和反序列化 之 dynamic 动态Json的反序列化

     序列化和反序列化的常识不再赘述,如果不清楚这个,可以 参考一下其他人写的文章https://www.cnblogs.com/maitian-lf/p/3670570.html

    总结的说,

    序列化 是把内存对象 转变成 二进制流/xml/json 等格式,保存起来或者用来传输

    反序列化 是把 二进制流/xml/json 等的内容,转变回 内存对象。

    以JSON为列,大多数的反序列化代码类似这样

    
    
        class Student
        {
            public int Id { get; set; }
            public string Name { get; set; }
    
    
            public void Test()
            {
                string studentJson = JsonConvert.SerializeObject(this);
    
                JsonConvert.DeserializeObject<Student>(studentJson);
            }
        }
    
    
    
      当你执行反序列化的时候,你必须定义一个Json格式对应的类。
    
    {"Id":1,"Name":"csszbb"} 对应与Student  ,大多数人的代码如上,会取定义一个Student类。
    
    那么问题来了,如果 JSON 串的格式是动态的那?
    第一次可能是{"Id":1,"Name":"csszbb"}
    第二次可能是{"Id":1,"Name":"csszbb""Weight"120}
    
    第三次。第四次。字段有可能发生变化。如果不改Student类的定义,上述代码是会报错的。那我们怎么办?
    
    在JAVAScript种,对象是动态类型的,任何类型的json串,都可以Json.payse(xxx) 转化成 JSP的对象。非常方便.因为jsp的对象是支持动态添加属性的。不需要像C#那样,预先定义一个类
    
    那么C#种有没有类似的东西那 ?答案是有的  dynimic 关键字  基础常识学习可以看下这篇文章 https://www.cnblogs.com/gygtech/p/9915367.html
    
    
    

    
    

     上述代码是完全可行的。







  • 相关阅读:
    java 基本数据类型的取值范围
    警惕自增的陷阱
    三元操作符的类型务必一致
    不要随便设置随机种子
    优先使用整形池
    IN、ANY、ALL与SOME
    第六章-序列:字符串、列表和元组 笔记
    第十二章-安全性
    第五章-数字 课后答案
    第十一章-约束、视图与事务
  • 原文地址:https://www.cnblogs.com/CSSZBB/p/13879390.html
Copyright © 2011-2022 走看看