正确解析DynamoDB AttributeValue

时间:2015-07-15 19:53:58

标签: c# amazon-web-services amazon-dynamodb aws-sdk

我有以下方法:

public static object GetValueFromAttributeValue(AttributeValue value)
{
    if(value == null) return null;
    if(value.N != null) return Convert.ToInt64(value.N); //long
    if(value.B != null) return value.B; //MemoryStream
    if(value.S != null) return value.S; //string
    if(value.SS != null) return value.SS; //List<string>
    if(value.BS != null) return value.BS; //List<MemoryStream>
    if(value.NS != null) return value.NS.Select(v => Convert.ToInt64(v)).ToList(); //List<long>
    if(value.IsLSet && value.L != null) return value.L.Select(v => GetValueFromAttributeValue(v)).ToList(); //List<object>
    if(value.IsMSet && value.M != null) return value.M.ToDictionary(i => i.Key, i => GetValueFromAttributeValue(i.Value)); //Dictionary<string, object>
    if(value.IsBOOLSet) return value.BOOL; //bool
    return null;
}

这里的问题是AttributeValue.SSAttributeValue.BSAttributeValue.NS永远不会为空,即使AttributeValue对象本身没有映射到任何列表,它只返回一个空列表。

因此,从未达到或满足这三个以下的所有条件,因为(value.SS != null)始终为真。

AttributeValue未定义类似IsSSet或类似内容的属性,因此我可以知道该值实际上SS,{{1} }或BS

您可以看到此辅助属性存在于其他属性值类型,例如NSLM

如果属性值对应于字符串类型,则为BOOL,还有S != nullSS != nullBS != null

如果属性值对应于例如字符串集,那么NS != nullSS != nullBS != null

如您所见,我无法确定某个值是否与三种类型中的任何一种相对应。我无法识别这些属性值。

0 个答案:

没有答案