public static AttributeCollection FromJsonElement(JsonElement json) { var item = new AttributeCollection(); foreach (var property in json.EnumerateObject()) { item.Add(property.Name, DbValue.FromJsonElement(property.Value)); } return(item); }
// { "hitCount":{"N":"225"}, "date":{"S":"2011-05-31T00:00:00Z"}, "siteId":{"N":"221051"} } public static AttributeCollection FromJson(JsonObject json) { var item = new AttributeCollection(json.Keys.Count); foreach (var property in json) { item.Add(property.Key, DbValue.FromJson((JsonObject)property.Value)); } return(item); }
internal static AttributeCollection FromObject(object instance, DatasetInfo schema) { #region Preconditions if (instance == null) { throw new ArgumentNullException(nameof(instance)); } #endregion var attributes = new AttributeCollection(); foreach (var member in schema.Members) { var value = member.GetValue(instance); if (value == null) { continue; } var typeInfo = TypeDetails.Get(member.Type); IDbValueConverter converter; if (DbValueConverterFactory.TryGet(member.Type, out converter)) { var dbValue = converter.FromObject(value, member); if (dbValue.Kind == DbValueType.Unknown) { continue; } attributes.Add(member.Name, dbValue); } else if (member.Type.IsArray) { var a = (Array)value; var list = new List <DbValue>(a.Length); foreach (var item in a) { list.Add(new DbValue(FromObject(item))); } attributes.Add(member.Name, new DbValue(list)); } else if (typeInfo.IsList && typeInfo.ElementType != null) { var a = (IList)value; var list = new List <DbValue>(a.Count); IDbValueConverter c; if (DbValueConverterFactory.TryGet(typeInfo.ElementType, out c)) { foreach (var item in a) { list.Add(c.FromObject(item, member)); } } else { foreach (var item in a) { list.Add(new DbValue(FromObject(item))); } } attributes.Add(member.Name, new DbValue(list)); } else { try { attributes.Add(member.Name, new DbValue(FromObject(value))); } catch { throw new Exception(value.GetType().Name + "/" + typeInfo.IsList); } } } return(attributes); }