首页 / .NET / 正文

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

7898 发布于: 2018-01-03 读完约需4分钟

问题描述

.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()}
                }
            );

版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。

上一篇: [Bootstrap]Bootstrap 3中的sr-only css 样式类是什么?

下一篇: [SQL Server]SQL Server中如何将一个表中的一列(多行)连接成一行字符串?

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

分享扩散:

发表评论

登录用户才能发表评论, 请 登 录 或者 注册