Json string[] to Bitmask Conversion



我有一个Web服务,它正在返回包含字符串数组的JSON对象。我已经通过json.net处理了对象:

    public partial class Token
    {
        [JsonProperty("id")]
        public string Id { get; set; }
        [JsonProperty("name")]
        public string Name { get; set; }
        [JsonProperty("permissions")]
        public string[] Permissions { get; set; }
    }

我想将Permissions字符串数组转换为枚举,然后将所得的位掩码存储到SQLITE数据库中的BLOB列中。我的枚举是这样构建的:

        [Flags]
        public enum Rights : uint
        {
            none= 0,
            read = 1,
            write = 2,
            modify = 4,
            [... etc ...]
        }

将字符串数组分析到位于数据库中的BitMask(INT(中的正确方法是什么?

我将要做的是从数据库中获取BitMask,然后使用.hasflag来确定是否在令牌中授予了适当的权限。

我也开放了更好的方法来实现这一目标。

将字符串值列表转换为可以将Enum.Parse(将字符串转换为enum(和Aggregate转换为的单个值的单个值:

string[] permissions = new[]{"read", "write"};
Rights r = permissions
         .Select(x => (Rights)Enum.Parse(typeof(Rights), x)) // parse string to enum
         .Aggregate((cur,next) => cur | next); // merge all into single value

注意:如果您不能保证该值实际上总是有效的,请使用Enum.TryParse而不是Parse,并且有一些默认值。

最新更新