public void CanMergeNestedJson() { dynamic data1 = JsonConvert.DeserializeObject <System.Dynamic.ExpandoObject>(_jsonProfileAddress); dynamic data2 = JsonConvert.DeserializeObject <System.Dynamic.ExpandoObject>(_jsonProfileAddress2); var result = DynamicUtils.Merge(data1, data2); Assert.IsNotNull(result); Assert.IsNotNull(result.profile); Assert.AreEqual(result.profile.address.line1, "line 1", "profile.address.line1 doesn't contain expected values."); Assert.AreEqual(result.profile.address.line2, "line 2", "profile.address.line2 doesn't contain expected values."); }
public void CanMergeJson() { dynamic data1 = JsonConvert.DeserializeObject <System.Dynamic.ExpandoObject>(_json); dynamic data2 = JsonConvert.DeserializeObject <System.Dynamic.ExpandoObject>(_json2); var result = DynamicUtils.Merge(data1, data2); Assert.IsNotNull(result); Assert.AreEqual(result.profile2.firstName, "new", "profile2.firstName doesn't contain expected values."); // check old properties remain Assert.AreEqual(result.profile.firstName, "Jason", "profile.firstName doesn't contain expected values."); }
/// <summary> /// Merges the getAccountInfo model with the ds data and adds the DS mapping fields to <param name="mappingFields"></param> /// </summary> /// <param name="accountInfo"></param> /// <returns></returns> public dynamic Merge(dynamic accountInfo, List <MappingField> mappingFields) { // get ds data var data = GetOrSearch(accountInfo.UID); if (data == null) { return(accountInfo); } // merge with accountInfo accountInfo = DynamicUtils.Merge(accountInfo, data); AddMappingFields(mappingFields); return(accountInfo); }
public void MergeSameProperty() { dynamic data1 = JsonConvert.DeserializeObject <System.Dynamic.ExpandoObject>(@"{ ""profile"": { ""firstName"": ""original"", ""age"": 1 } }"); dynamic data2 = JsonConvert.DeserializeObject <System.Dynamic.ExpandoObject>(@"{ ""profile"": { ""firstName"": ""new"", ""age"": 1 } }"); var result = DynamicUtils.Merge(data1, data2); Assert.AreEqual(result.profile.firstName, "new"); }
/// <summary> /// Uses the Gigya ds.search API call to retrieve data. /// FetchDSCompleted event will not be fired. /// </summary> /// <param name="uid">The user Id.</param> /// <param name="dsType">The ds type that is passed in the type param.</param> /// <param name="fields">A collection of field names or null to have them created from the settings.</param> /// <returns></returns> public dynamic Search(string uid, string dsType, IEnumerable <string> fields = null) { if (string.IsNullOrEmpty(uid)) { throw new ArgumentException("uid"); } if (string.IsNullOrEmpty(dsType)) { throw new ArgumentException("dsType"); } var query = GigyaDsSearchHelper.BuildQuery(uid, dsType, fields); var response = _apiHelper.Search(_settings, query); if (response == null) { return(null); } dynamic model = JsonConvert.DeserializeObject <ExpandoObject>(response.GetResponseText()); var modelDictionary = model as IDictionary <string, object>; if (!modelDictionary.ContainsKey("results") || model.results.Count == 0) { return(null); } var mergedResults = new ExpandoObject(); foreach (var result in model.results) { var resultDictionary = result as IDictionary <string, object>; if (resultDictionary.ContainsKey("data")) { mergedResults = DynamicUtils.Merge(mergedResults, result.data); } } return(mergedResults); }