首页 > 解决方案 > 将类序列化为单个字符串

问题描述

我想序列化和反序列化一个自定义类,使其表现得像一个简单的枚举。

例如:

public enum Channel
{
   EMail,
   Telephone
}

给出以下 Json 表示:

{
    "Channel": "EMail"
}

我目前的做法:

[Serializable]
public sealed class Channel : ISerializable
{
    public static readonly Channel Email = new Channel("Email");
    public static readonly Channel Telephone = new Channel("Telephone");

    public string Key { get; private set; }

    //// Deserialization
    private Channel(SerializationInfo info, StreamingContext context)
    {
        Key = (string)info.GetValue(nameof(Channel), typeof(string));
    }

    public void GetObjectData(SerializationInfo info, StreamingContext context)
    {
        info.AddValue(nameof(Channel), Key);
    }
}

但这带来了以下 json 表示:

{
  "Channel":{"Channel":"Email"}
}

所以我想摆脱类的“复杂结构”。在序列化的上下文中,它应该表现得像一个枚举或字符串。我怎样才能实现这种行为?总而言之,我想摆脱 json 表示中的封装。

标签: c#jsonserialization

解决方案


推荐阅读