Newton.JSON将数字序列化为枚举项[重复]

Posted

技术标签:

【中文标题】Newton.JSON将数字序列化为枚举项[重复]【英文标题】:Newton.JSON Serialize number to Enum item [duplicate] 【发布时间】:2019-03-15 06:45:08 【问题描述】:

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


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

【问题讨论】:

见this answer 到.NET - JSON serialization of enum as string、Serialize enum as a string in JSON.NET using attributes 和How to tell Json.Net globally to apply the StringEnumConverter to all enums。 【参考方案1】:

您可以用自己的 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,
            );
        
    

【讨论】:

以上是关于Newton.JSON将数字序列化为枚举项[重复]的主要内容,如果未能解决你的问题,请参考以下文章

System.Text.Json:当json配置具有通用JsonStringEnumConverter时,如何将单个枚举序列化为数字[重复]

如何将远程 crate 的枚举序列化和反序列化为数字?

使用 Jackson 和 Spring 将 JavaScript 数组反序列化为 Java LinkedHashSet 不会删除重复项

如果已删除枚举项,则将Json反序列化回列表或枚举会导致错误[重复]

将枚举序列化为字符串

将枚举成员序列化为 JSON