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时,如何将单个枚举序列化为数字[重复]
使用 Jackson 和 Spring 将 JavaScript 数组反序列化为 Java LinkedHashSet 不会删除重复项