当前位置:  开发笔记 > 编程语言 > 正文

当我将具有枚举属性的类的对象序列化为JSON时,如果该值为null,则生成的json被borked

如何解决《当我将具有枚举属性的类的对象序列化为JSON时,如果该值为null,则生成的json被borked》经验,为你挑选了1个好方法。

当我将具有枚举属性的类的对象序列化为JSON时,如果该值为null,则生成的json字符串具有如下的名称值对:

"controlType":"-2147483648"

当我将字符串反序列化为强类型对象时,这会导致问题.

处理枚举和空值的最佳方法是什么?



1> DMCS..:

下面的代码为你提供了json =' {"Name":"Test","Id":1,"MyEnum":3} ',当你有一个非空值时.

        public enum SerializeObjTestClassEnum
    {
        one = 1, two, three, four
    }

    [Serializable]
    public class SerializeObjTestClass
    {
        public string Name { get; set; }
        public int Id { get; set; }
        public SerializeObjTestClassEnum MyEnum{ get; set; }
    }

    public void SerializeObject_Test_Basic_Object()
    {
        var obj = new SerializeObjTestClass { Id = 1, Name = "Test", MyEnum = SerializeObjTestClassEnum.three };
        var json = (new JavaScriptSerializer()).Serialize(obj);
    }

此代码为您提供json =' {"Name":"Test","Id":1,"MyEnum":0} '

    var obj = new SerializeObjTestClass { Id = 1, Name = "Test" };

注意枚举在未设置时是如何序列化为0,而枚举本身从1开始.这就是你的代码如何知道用于枚举的NULL值.

如果你想让json看起来像' {"Name":"Test","Id":1,"MyEnum":null} ',那么你需要通过使用类包装器来伪造它枚举.

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有