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




 上述代码是完全可行的。







原文地址:https://www.cnblogs.com/CSSZBB/p/13879390.html