首页 > 解决方案 > Newton.JSON 将数字序列化为枚举项

问题描述

我们想用 Newton.JSON 将一个对象序列化为 JSON,但是这个对象使用一个枚举,然后在底层 int 中进行转换(参见下面 JSON 中的“数据类型”)。如何继续获得“枚举字符串”表示?

{
    "Timestamp": 1538568112852,
    "Metrics": [{
        "Name": "bdSeq",
        "Timestamp": 1538568112852,
        "Datatype": 4,
        "IsNull": false,
        "LongValue": 0
    }],
    "Seq": 18446744073709551615
}

标签: c#serializationenumsjson.netnumbers

解决方案


您可以用自己的 JsonSerializer 替换标准的 JsonSerializer。

在startup.cs中:

services.AddScoped(typeof(JsonSerializer), typeof(EnumAsStringSerializer));

和班级本身:

 public class EnumAsStringSerializer : JsonSerializer
    {
        public EnumAsStringSerializer()
        {
            this.ContractResolver = new CamelCasePropertyNamesContractResolver();
            this.Converters.Add(new StringEnumConverter
            {
                CamelCaseText = true,
            });
        }
    }

推荐阅读