小编Cra*_*g H的帖子

将字典键从json反序列化到.net中的枚举

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

images: {
    low_resolution: {
        url: "...",
        width: 150,
        height: 150
    },
    high_resolution: {
        url: "...",
        width: 450,
        height: 450
    }
}
Run Code Online (Sandbox Code Playgroud)

我将响应反序列化为对象,并将图像转换为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>();
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,这一切都很好,但我宁愿将图像分辨率信息反序列化为枚举值.
所以我创建了一个枚举ImageResolution并将字典键更改stringImageResolution.

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

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

    [EnumMember(Value = "high_resolution")] …
Run Code Online (Sandbox Code Playgroud)

.net c# json.net deserialization dotnet-httpclient

3
推荐指数
1
解决办法
2420
查看次数

标签 统计

.net ×1

c# ×1

deserialization ×1

dotnet-httpclient ×1

json.net ×1