[英]C# Possible To Serialise Enum description instead Enum value With Json
我遇到过从两个不同的 Web 服务收到响应的情况。 这两个响应在结构上是相同的,但具有不同的父命名空间。 我想要做的是将这些响应转换为一个标准类,然后我可以传递给父对象。 我认为最简单的方法是将传入的对象序列化为 Json,然后将对象反序列化为我的标准对象。 这使我的处理代码相当简单
var jsonString = JsonConvert.SerializeObject(serviceResponse.Results);
var commonObject = JsonConvert.DeserializeObject<StandardResult>(jsonString);
在大多数情况下,这是有效的。 但是,我在扩展 StandardResult 对象时发现了一些问题。
对象的属性之一是具有以下属性的类:
public class EntryDetailType
{
public string EntryNumber {get; set;}
public string EntryText {get; set;
public int Item {get; set;}
}
问题是Item
实际上可以是传入数据中的两个不同枚举之一。 因此,尽管转换正确地将枚举的值放入Item
我不知道该值指的是哪个枚举。 在这个阶段我没有使用 JsonConverter 类,因为对象非常大,如果可能的话,我想避免这种情况。
作为此过程的一部分,是否有一种方法可以获取枚举的描述而不是值,还是我将被迫编写自己的 json 转换器? 请记住, EntryDetailType
类不在我的项目中。 它是通过 wsdl 文档添加的 Web 服务的返回类型。
好吧,如果类EntryDetailType
确实有一个名为Item
的类型为int
的属性,则无法推断您拥有的enum
哪个名称表示值。
但是,如果该类具有任何enum
类型的属性Item
,那么它就像使用内置StringEnumConverter
作为 SerializeObject 方法的第二个参数序列化为 Json 一样简单:
var jsonString = JsonConvert.SerializeObject(serviceResponse.Results, new Newtonsoft.Json.Converters.StringEnumConverter());
ps:我假设您使用的是 NewtonSoft 的 Json.NET。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.