gpt4 book ai didi

c# - 将字典键从 json 反序列化为 .net 中的枚举

转载 作者:行者123 更新时间:2023-11-30 14:52:20 26 4
gpt4 key购买 nike

<分区>

我正在读取来自 API 的 json 响应,其中包含有关图像的信息。
它是像这样的字典格式:

images: {
low_resolution: {
url: "...",
width: 150,
height: 150
},
high_resolution: {
url: "...",
width: 450,
height: 450
}
}

我正在将响应反序列化为一个对象,并将图像反序列化为 Dictionary 属性,如下所示:

[DataContract()]
public class Post
{
...
[DataMember(Name = "images")]
public IDictionary<string, Media> Images { get; set; }
...
}

HttpResponseMessage response = await client.GetAsync(query);
if (response.IsSuccessStatusCode)
{
post = await response.Content.ReadAsAsync<Post>();
}

到目前为止一切正常,但我宁愿将图像分辨率信息反序列化为枚举值。
所以我创建了一个枚举 ImageResolution 并将字典键从 string 更改为 ImageResolution

这也反序列化成功,只要实际枚举值等于json字符串,但我想更改枚举值。
根据其他各种帖子,我尝试了以下方法:

[DataContract()]
public enum ImageResolution
{
[EnumMember(Value = "low_resolution")]
Low,

[EnumMember(Value = "high_resolution")]
High,
}

另外通过搜索我也尝试添加:

[JsonConverter(typeof(StringEnumConverter))]

但到目前为止没有任何效果。
响应中还有另一个属性,我成功反序列化为枚举并使用 JsonConverter 属性更改枚举值,但这是一个直接的属性而不是字典键,所以我猜它是字典键导致了一些问题。

是否可以将 json 值反序列化为不同文本值的枚举字典键?

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