首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >枚举序列化Json与XML

枚举序列化Json与XML
EN

Stack Overflow用户
提问于 2012-05-19 18:23:15
回答 3查看 5.5K关注 0票数 20

我在我的项目中有以下枚举

public enum CameraAccessMethod
{
    Manual = 0,
    Panasonic = 1,
    Axis = 2,
    AirCam = 3
}

我有一个对象,它根据不同的场景被序列化为json或XML,其中一个对象的属性是CameraAccessMethod类型。我的问题是,当这个属性被序列化为XML时,它将给出枚举值的字符串表示(Manual,Panasonic,Axis,Aircam),但在JSON中,它被序列化为数字值(0,1,2,3)。如何避免这种不一致?我也想要JSON序列化中的字符串。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-26 20:12:45

由于Web API RC,您可以通过在Application_Start()期间对现有的JsonMediaTypeFormatter转换器集合应用StringEnumConvert来获取枚举的字符串表示形式

var jsonFormatter = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
var enumConverter = new Newtonsoft.Json.Converters.StringEnumConverter();
jsonFormatter.SerializerSettings.Converters.Add(enumConverter);
票数 36
EN

Stack Overflow用户

发布于 2012-05-22 13:41:19

如果您切换到使用基于Json.NET的格式化程序(将随next drop of ASP.NET Web API一起提供),则可以很容易地实现这一点。有关详细信息,请参阅这篇文章:

How to tell Json.Net globally to apply the StringEnumConverter to all enums

票数 1
EN

Stack Overflow用户

发布于 2013-06-24 12:23:56

要同时使用JsonMediaTypeFormatterenumConverter,我们可以使用下面的代码。//代码从这里开始

var serializerSettings = GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings;
var enumConverter = new Newtonsoft.Json.Converters.StringEnumConverter();
serializerSettings.Converters.Add(enumConverter);
GlobalConfiguration.Configuration.Formatters.Clear();
GlobalConfiguration.Configuration.Formatters.Add(new PartialJsonMediaTypeFormatter()
{
     IgnoreCase = true,
     SerializerSettings = serializerSettings
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10664314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档