您可以更改JSON更改默认的TypeNameHandling $ type变量名称吗?

时间:2019-02-23 11:12:01

标签: c# json.net

当我序列化一个具有变量的类时,该类是具有子类值的基类,那么我可以对其进行序列化,以便将$type变量放入其中,这样它在反序列化时便知道其应为哪种类型。

但是是否可以将变量名$type更改为其他名称,例如_type

以下是示例:

namespace ScratchCore
{
    public class Person
    {
        public string Name;
        public BaseDetail Detail;
    }
    public class BaseDetail
    {
        public string Description;
    }
    public class FooDetail: BaseDetail
    {
        public string Foo;
    }
    public class BarDetail: BaseDetail
    {
        public string Bar;
    }

    class Program
    {
        static void Main(string[] args)
        {
            JsonSerializerSettings settings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.Auto };
            Person peter = new Person();
            peter.Detail = new FooDetail();
            var json = JsonConvert.SerializeObject(peter, Formatting.Indented ,settings);
            Console.WriteLine(json);

            Console.WriteLine("Done");
            Console.ReadLine();
        }
    }
}

enter image description here

在这里,您可以看到它已序列化detail并自动在其中放入了$type变量。

那么可以将此变量名从$type更改为_type吗?

更新:

此问题是JSON.Net - Change $type field to another name?

的重复项

0 个答案:

没有答案