号外号外: 原[图享网]更名为 码友网(codedefault.com) 啦,感谢大家一路上的陪伴与支持。代码的世界里,码友网与大家一起同行!

.NET[C#]如何将一个枚举序列化成对应的字符串?

.NET 作者: Rector 682阅读 0评论 0收藏 收藏本文 编辑

郑重申明:本文未经许可,禁止任何形式转载

问题描述

.NET[C#]如何将一个枚举序列化成对应的字符串?
比如有如下代码:

enum Gender { Male, Female }

class Person
{
    int Age { get; set; }
    Gender Gender { get; set; }
}

现在实体类:

var person=new Person
{
    Age=32,
    Gender=Gender.Male
};

要求将 person 序列化成如下JSON字符串:

{ "Age": 32, "Gender": "Male" }

应该怎么实现,有哪些方式呢?

方式一

使用JSON.Net 序列化组件的 StringEnumConverter 属性:

using Newtonsoft.Json;
using Newtonsoft.Json.Converters;

[JsonConverter(typeof(StringEnumConverter))]
public Gender Gender { get; set; }

方式二

如果你是在ASP.NET MVC 程序中,你可以配置全局的JSON格式化器,如下:

HttpConfiguration config = GlobalConfiguration.Configuration;
            config.Formatters.JsonFormatter.SerializerSettings.Formatting =
                Newtonsoft.Json.Formatting.Indented;

            config.Formatters.JsonFormatter.SerializerSettings.Converters.Add
                (new Newtonsoft.Json.Converters.StringEnumConverter());

或者创建一个 JsonSerializerSettings

JsonConvert.DefaultSettings = (() =>
{
    var settings = new JsonSerializerSettings();
    settings.Converters.Add(new StringEnumConverter { CamelCaseText = true });
    return settings;
});

或者

var result = JsonConvert.SerializeObject
            (
                dataObject,
                new JsonSerializerSettings
                {
                    Converters = new [] {new StringEnumConverter()}
                }
            );

阅读了该文章的人还浏览了...

本文永久链接码友网 » .NET[C#]如何将一个枚举序列化成对应的字符串?

发布于: 2018-01-03 09:36:00
分享扩散: