C#JsonConvert.DeserializeObject创建错误的枚举

时间:2016-10-14 15:02:30

标签: c# asp.net-web-api asp.net-web-api2

我发现一个问题,我向控制器传递了一个超出枚举范围的int,但是 JsonConvert.DeserializeObject 仍然映射到传递的int。

例如,我传入int 9以映射到下面的AvatarEnum,然后当我查看生成的模型时,我看到 DefaultAvatar = 9 ,尽管AvatarEnum显然只是达到5

我有这个基本的枚举:

public enum AvatarEnum : int
{
    Unknown = 0,
    Balloon = 1,
    Flower = 2,
    Sand = 3,
    Bubbles = 4,
    Seaweed = 5
}

包含枚举的简单模型:

internal class DefaultAvatarModel
{
    public AvatarEnum DefaultAvatar { get; set; }
}

JSON反序列化:

try
{
    avatarModel = JsonConvert.DeserializeObject<DefaultAvatarModel>(jsonMessage);
}
catch (JsonSerializationException)
{
    return Request.CreateResponse(HttpStatusCode.BadRequest, "Bad JSON request.");
}

所以我传入:

jsonMessage = "{\"DefaultAvatar\":\"9\"}"

结果是:

avatarModel.DefaultAvatar == 9

0 个答案:

没有答案