首页 > C# > 在 json 中获取枚举,无需创建自定义?也许有一个属性可以用来装饰定义或对象属性?

在 json 中获取枚举,无需创建自定义?也许有一个属性可以用来装饰定义或对象属性?

上一篇 下一篇

我有一个包含属性的类,在使用序列化对象时,我的 json 结果包含枚举的整数值而不是它的“名称”。有没有办法在我的 json 中获取枚举,而无需创建自定义?也许有一个属性可以用来装饰定义或对象属性?enumJavaScriptSerializerstringstringJavaScriptConverterenum

举个例子:

enum Gender { Male, Female }

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

所需的 JSON 结果:

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

理想情况下,使用内置的 .NET 框架类寻找答案,如果不是可能的替代方案(如 Json.net),欢迎使用。

分割线

网友回答:

不,没有可以使用的特殊属性。 序列化为其数值,而不是其字符串表示形式。您需要使用自定义序列化来序列化其名称而不是数值。JavaScriptSerializerenumsenum


如果您可以使用 JSON.Net 而不是查看 Omer Bokhari 提供的有关此问题的答案:JSON.net 涵盖了此用例(通过属性)以及内置 .NET 序列化程序未处理的许多其他用例。这是一个比较序列化程序的特性和功能的链接。JavaScriptSerializer[JsonConverter(typeof(StringEnumConverter))]

分割线

网友回答:

我发现 Json.NET 提供了我正在寻找的带有属性的确切功能:StringEnumConverter

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

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

有关更多详细信息,请参阅文档。StringEnumConverter

还有其他位置可以更全局地配置此转换器:

  • 枚举本身,如果您希望枚举始终序列化/反序列化为字符串:
    [JsonConverter(typeof(StringEnumConverter))]  
    enum Gender { Male, Female }
    
  • 如果有人想避免属性修饰,您可以将转换器添加到 JsonSerializer(由 Bjørn Egil 建议):
    serializer.Converters.Add(new Newtonsoft.Json.Converters.StringEnumConverter()); 
    

    它将适用于它在序列化期间看到的每个枚举(由 Travis 建议)。

  • 或 JsonConverter(由 banana 建议):
    JsonConvert.SerializeObject(MyObject, 
        new Newtonsoft.Json.Converters.StringEnumConverter());
    

此外,您还可以通过使用 StringEnumConverter(命名策略,布尔)构造函数来控制大小写以及是否仍接受数字。

分割线

网友回答:

将以下内容添加到您的 global.asax 中,以便将 c# 枚举作为字符串进行 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());

模板简介:该模板名称为【在 json 中获取枚举,无需创建自定义?也许有一个属性可以用来装饰定义或对象属性?】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【C#】栏目查找您需要的精美模板。

相关搜索
  • 下载密码 lanrenmb
  • 下载次数 282次
  • 使用软件 Sublime/Dreamweaver/HBuilder
  • 文件格式 编程语言
  • 文件大小 暂无信息
  • 上传时间 02-16
  • 作者 网友投稿
  • 肖像权 人物画像及字体仅供参考
栏目分类 更多 >
热门推荐 更多 >
自适应 响应式 单页式简历模板 html5 微信素材 微信公众平台 微信文章 企业网站 微信图片 微信模板
您可能会喜欢的其他模板