gpt4 book ai didi

c# - 在 Json.net 中序列化枚举列表

转载 作者:行者123 更新时间:2023-11-30 23:27:27 25 4
gpt4 key购买 nike

我有一个解决方案,我需要将一些 C# 类转换为 REST API 的 JSON 格式。我使用枚举是为了避免在枚举就足够的情况下必须记住要为值传递的字符串。

为此,参数之一是枚举列表。因为我已经有一个使用 JsonConverter 编写的类,所以我想我只是将这个枚举列表传递给 WriteJson 方法,因为我只是一个普通的枚举,它会在某个地方的幕后自动处理它的列表组件.不幸的是,情况并非如此。在我的 WriteJson 方法中,我有以下内容:

public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) {
var e = (SuiteType) value;
switch (e) {
case SuiteType.Full:
writer.WriteValue("complete");
break;
case SuiteType.Partial:
writer.WriteValue("partial");
break;
}
}

当我尝试将其转换为 SuiteType 时,这给出了关于错误转换的错误,因为当然入站值实际上是一个 SuiteType 列表,而不仅仅是一个 SuiteType。考虑到这一点,我该如何处理这种自定义转换(因为枚举名称与它们输出的字符串或 int 值之间并不总是 1:1,同时仍然从此类枚举的集合中转换?

最佳答案

当然,我一发布,就想到了答案。而不是在类对象上标记List属性,如:

[JsonProperty("types")]
[JsonConverter(typeof(SuiteTypeConverter))]
public List<SuiteType> Types { get;set;}

相反,从那里删除 JsonConverter 并将其放在枚举定义的顶部,如下所示:

[JsonConverter(typeof(SuiteTypeConverter))]
public enum SuiteType {
...
}

而且效果很好。

关于c# - 在 Json.net 中序列化枚举列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36563449/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com