public void Receive(string endpointName, JArray events) { JArray processedArray; if (this.client.IsConnected == false) { this.client.Connect(ClientID, AuthUsername, AuthPassword); } if (this.client.IsConnected == true) { if (!IsBatch) { //Process and transmit all records individually processedArray = new JArray(); foreach (JObject inputObject in events.Cast <JObject>()) { JObject processedObject = UseNestedObject ? ProcessComplexObject(inputObject) : inputObject; client.Publish(this.Topic, Encoding.UTF8.GetBytes(processedObject.ToString()), QualityOfService, false); processedArray.Add(processedObject); } } else { //Process and transmit all records at once processedArray = UseNestedObject ? JArray.FromObject(events.Cast <JObject>().Select(inputObject => ProcessComplexObject(inputObject))) : events; client.Publish(this.Topic, Encoding.UTF8.GetBytes(processedArray.ToString()), QualityOfService, false); } //Always send all records to the next stream object at once this.OnPublish?.Invoke(this, new OnPublishArgs(processedArray, "Output")); } JObject ProcessComplexObject(JObject inputObject) { JObject dataRecord = new JObject(inputObject); Dictionary <string, object> outputDict = new Dictionary <string, object>(); //Remove requested fields from the record and attach to a temporary dictionary foreach (var(source, alias) in ComplexObjectAliases) { outputDict.Add(alias, dataRecord[source]); dataRecord.Remove(source); } //Turn the dictionary into the requested complex object (either an object or an array) JToken complexObject = NestedObjectAsArray ? (JToken)JArray.FromObject(outputDict.Values) : JObject.FromObject(outputDict); dataRecord.Add(this.config[ObjectNameParam], complexObject); return(dataRecord); } }
/// <summary> /// Helper function to parse a <see cref="List{T}"/> of <see cref="List{T}"/> of <see cref="List{T}"/> of <see cref="Position"/>. /// </summary> /// <param name="array"> /// Get JSON from this. /// </param> /// <returns> /// The parsed JSON. /// </returns> /// <exception cref="ArgumentException"> /// Unexpected JSON. /// </exception> public static List <List <List <Position> > > ParseListListListPosition(JArray array) { if (array.Cast <JArray>().Any(p => p.Cast <JArray>().Any(r => r.Cast <JArray>().Any(l => l.Count < 2)))) { throw new ArgumentException( string.Format( "Expected all points to have greater than two points, got {0} with zero and {1} with one", array.Cast <JArray>().Sum(p => p.Cast <JArray>().Sum(r => r.Cast <JArray>().Count(l => l.Count == 0))), array.Cast <JArray>().Sum(p => p.Cast <JArray>().Sum(r => r.Cast <JArray>().Count(l => l.Count == 1)))), "array"); } return(array.Select(p => p.Select(r => r.Select(l => new Position { P1 = (double)l[0], P2 = (double)l[1] }).ToList()).ToList()).ToList()); }
private string MapPropertyValueIdToNames(JArray jArray) { foreach (var item in jArray.Cast <JObject>()) { var fieldSets = GetArray(item, "fieldSets"); foreach (var fieldSet in fieldSets.Cast <JObject>()) { var containers = GetArray(fieldSet, "containers"); foreach (var container in containers.Cast <JObject>()) { var fields = GetArray(container, "fields"); foreach (var field in fields.Cast <JObject>()) { var attempt = GetObjectValue <Guid>(field, "prevalueSourceId"); if (attempt && attempt.Result != Guid.Empty) { var prevalue = syncFormService.GetPreValueSource(attempt.Result); if (prevalue != null) { field["prevalueSourceId"] = prevalue.Name; } } } } } } return(jArray.ToString(Formatting.Indented)); }
internal UserProfilePhotosInfo(JObject jsonObject) { TotalCount = jsonObject["total_count"].Value <int>(); JArray arrayOfArrays = jsonObject["photos"].Value <JArray>(); Photos = arrayOfArrays.Cast <JArray>().Select(PhotoSizeInfo.ParseArray).ToArray(); }
private void CheckSend(int trackMessagesCount, int engageMessagesCount) { // Track var trackSplits = GetSplits(trackMessagesCount, BatchMessageWrapper.MaxBatchSize); var trackHttpPostEntries = HttpPostEntries.Where(x => x.Endpoint == TrackUrl).ToList(); Assert.That(trackHttpPostEntries.Count, Is.EqualTo(trackSplits.Count)); for (int i = 0; i < trackHttpPostEntries.Count; i++) { JArray msg = ParseBatchMessageData(trackHttpPostEntries[i].Data); Assert.That(msg.Count, Is.EqualTo(trackSplits[i])); foreach (JObject msgPart in msg.Cast <JObject>()) { AssertTrackJson(msgPart); } } // Engage var engageSplits = GetSplits(engageMessagesCount, BatchMessageWrapper.MaxBatchSize); var engageHttpPostEntries = HttpPostEntries.Where(x => x.Endpoint == EngageUrl).ToList(); Assert.That(engageHttpPostEntries.Count, Is.EqualTo(engageSplits.Count)); for (int i = 0; i < engageHttpPostEntries.Count; i++) { JArray msg = ParseBatchMessageData(engageHttpPostEntries[i].Data); Assert.That(msg.Count, Is.EqualTo(engageSplits[i])); foreach (JObject msgPart in msg.Cast <JObject>()) { AssertPeopleSetJson(msgPart); } } Assert.That(HttpPostEntries.Count, Is.EqualTo(trackSplits.Count + engageSplits.Count)); }
private static DataFrame ToDataFrame(JArray obj) { var dataFrame = new DataFrame(); var data = new Dictionary <string, List <object> >(); foreach (var row in obj.Cast <JObject>()) { foreach (var property in row) { if (!data.TryGetValue(property.Key, out var list)) { list = new List <object>(); } list.Add(((JValue)property.Value).Value); } } foreach (var item in data) { dataFrame.Columns.Add(new Vector <object>(item.Value, item.Key)); } return(dataFrame); }
public static void Main(string[] args) { Person[] people = GetPeople(); // Query 1: OK BUT NO CORRECT -> Accesso puntato al campo "age" var attempt_1 = people.Where(x => x.age == 20); // Query 2: NOT OK, BREAKS -> Accesso mediante stringa al campo "age" // SPIEGAZIONE: funziona normalmente se accedo al campo di un oggetto mediante notazione puntata //var attempt_2 = people.Where(x => x["age"] == 20); // Query 3: NOT OK, DOESN'T BREAK but returns no data // SPIEGAZIONE: non posso convertire direttamente una struttura in dynamic per usarvi poi su LINQ IEnumerable <dynamic> attempt_3_ = people.Cast <dynamic>(); var attempt_3 = attempt_3_.Where(x => x["age"] == 20); // Query 4: OK! // SPEIGAZIONE: per compiere query su una struttura // usando linq potendo operare su un qualsiasi cmapo, // occorre applicare linq alla stessa struttura dati ma // serializzata, così da NON essere più vincolato // dai tipi. Lo si fa: // -> serializzare la struttura in un JArray // -> castare il JArray ad IEnumerable<dynamic> // -> eseguo la query con LINQ // -> mappo il risultato nelle istanze della classe che componeva la struttura originale JArray arr = JArray.FromObject(people); IEnumerable <dynamic> attempt_4_ = arr.Cast <dynamic>(); var attempt_4a = attempt_4_.Where(x => x["age"] == 20); // OK Person[] people_filter_a = Person.DeserialPeople(attempt_4a); var attempt_4b = attempt_4_.Where(x => x["birth"] == new DateTime(1970, 1, 1)); // OK Person[] people_filter_b = Person.DeserialPeople(attempt_4b); }
/// <summary> /// 反序列化指定的数组为一个实体的列表。 /// </summary> /// <param name="listType"></param> /// <param name="jArray"></param> /// <returns></returns> public EntityList DeserializeList(Type listType, JArray jArray) { var entityType = EntityMatrix.FindByList(listType).EntityType; var repo = RF.Find(entityType); //构造或查询出数据对应的实体列表。 EntityList list = null; if (_creationMode == UpdatedEntityCreationMode.RequeryFromRepository) { //先从数据库中找出所有提供了 Id 的实体。 var idList = jArray.Cast <JObject>().Select(item => TryGetId(item)) .Where(id => id != null).ToArray(); list = repo.GetByIdList(idList); } else { list = repo.NewList(); } //依次反序列化数组中的实体: //如果有 Id,则在数据库中查询出的列表 list 中查找出对应的实体,然后反序列化值。否则,直接构造新实体。 for (int i = 0, c = jArray.Count; i < c; i++) { var jEntity = jArray[i] as JObject; var child = FindOrCreate(list, jEntity); DeserializeProperties(jEntity, child); } return(list); }
private void Parse(JObject jsonObject) { TotalCount = jsonObject["total_count"].Value <int>(); JArray arrayOfArrays = jsonObject["photos"].Value <JArray>(); Photos = arrayOfArrays.Cast <JArray>().Select(PhotoSizeInfo.ParseArray).ToArray(); }
/// <inheritdoc/> public override void ParseJson(JArray array) { if (array.Cast <JArray>().Any(l => l.Count < 2)) { throw new ArgumentException( string.Format( "Expected all points to have greater than two points, got {0} with zero and {1} with one", array.Cast <JArray>().Count(l => l.Count == 0), array.Cast <JArray>().Count(l => l.Count == 1)), "array"); } this.Points = array.Cast <JArray>().Select(l => new Point { Position = new Position { P1 = (double)l[0], P2 = (double)l[1] } }).ToList(); }
private IEnumerable <string> jarrayToStringCollection(JArray jArray) { Debug.Assert(jArray != null); return(jArray .Cast <JToken>() .Where(token => token.Type == JTokenType.String) .Select(token => token.Value <string>())); }
private string GetBestLanguageMatch(JArray literalArray) { if (_prefLang == null) { // Just the first object with an @value property return(literalArray .Cast <JObject>() .Select(o => o["@value"] as JValue) .FirstOrDefault() ?.Value <string>()); } JObject bestMatch = null; var bestMatchCount = -2; var prefToks = _prefLang.Split('-'); foreach (var tok in literalArray) { if (!(tok is JObject litObj)) { continue; } var lang = litObj["@language"]?.Value <string>(); var matchCount = 0; if (lang != null) { var langToks = lang.Split('-'); for (var i = 0; i < Math.Min(langToks.Length, prefToks.Length); i++) { if (langToks[i].Equals(prefToks[i], StringComparison.InvariantCultureIgnoreCase)) { matchCount += 2; } else { break; } } } else { // With no language code, count as a simple match matchCount = 1; } if (matchCount > bestMatchCount) { bestMatchCount = matchCount; bestMatch = litObj; if (bestMatchCount == (prefToks.Length * 2)) { // Exit early on a perfect match break; } } } return(bestMatch?["@value"]?.Value <string>()); }
/// <summary> /// Gets the value with key. /// </summary> /// <param name="key">Json key</param> /// <returns><see cref="Dictionary{TKey,TValue}">TKey is country, TValue is value key in param</see></returns> internal static Dictionary <string, string> GetValueWithKey(string key, bool needParseArray = false) { JArray jArray = GetDeserealizeObject(mCountriesUri); return(jArray.Cast <JObject>(). ToDictionary( keys => keys["name"]["common"].ToString(), keys => keys[key].ToString())); }
public void BaseLoad(JArray jsonArray) => this.MenuItems = jsonArray?.Cast <JObject>() .Select(v => { var child = new MenuItem { Menu = this, }; child.Load(v); return(child); }).ToArray();
public static async Task <JObject[]> GetPosts(long startId) { using (HttpClient client = new HttpClient()) { string url = GetPostsUrl(startId); string jsonString = await client.GetStringAsync(url); JArray jsonArray = JArray.Parse(jsonString); return(jsonArray.Cast <JObject>().ToArray()); } }
private object InferType(JArray array) { JValue firstTypedValue = array.Cast <JValue>().FirstOrDefault(x => x.Value != null); if (firstTypedValue == null) { return(new List <object>()); } Type type = firstTypedValue.Value.GetType(); Type listType = typeof(List <>).MakeGenericType(type); return(array.ToObject(listType)); }
/// <summary> /// Converts a valid <see cref="JArray"/> to a collection of <see cref="OperatorStats"/>, to be used when requesting operator data /// </summary> public static IEnumerable <OperatorStats> FromArray(JArray data) => data.Cast <JObject>().Select(element => new OperatorStats { ImageURL = element.GetString("img"), Name = element.GetString("name"), Organisation = element.GetString("org"), Index = element.GetString("index"), Subtitle = element.GetString("sub"), Type = (OperatorType)element.GetInt("type"), OperatorActionId = element.GetString("actn"), Action = element.GetString("phrase"), Order = element.GetUShort("ord") });
public static async Task <JObject[]> GetPosts(long startId) { using (HttpClient client = new HttpClient()) { client.DefaultRequestHeaders.Add("User-Agent", "E621AutoTag/0.1 (by checkium)"); string url = GetPostsUrl(startId); string jsonString = await client.GetStringAsync(url); dynamic posts = JObject.Parse(jsonString); JArray jsonArray = posts.posts; return(jsonArray.Cast <JObject>().ToArray()); } }
/// <summary> /// Builds classes from a provided JArray object /// </summary> /// <param name="entityClasses"></param> /// <returns></returns> private Dictionary <string, JObject> BuildClasses(JArray entityClasses) { // Copy unbuilt classes to a dictionary var tempDictionary = entityClasses.Cast <JObject>().ToDictionary(x => (string)x["Class"], x => x); // Dictionary for storing the built classes var result = new Dictionary <string, JObject>(); // Iterate over the unbuilt classes foreach (var className in tempDictionary.Keys) { BuildClass(className, tempDictionary, result); } return(result); }
public async Task GetHostKeys_DelaysUntilHostInitialized() { TestWebHookExtension.Initializing = false; TestWebHookExtension.Delay = 2000; try { // reset secrets to ensure the extension secret is not yet added var testSecretManager = (TestSecretManager)_testHost.JobHostServices.GetService <ISecretManagerProvider>().Current; testSecretManager.Reset(); // initiate a restart and a keys request concurrently var keysRequest = new HttpRequestMessage(HttpMethod.Get, "http://localhost/admin/host/systemkeys"); keysRequest.Headers.Add(AuthenticationLevelHandler.FunctionsKeyHeaderName, TestSecretManager.TestMasterKey); JObject keysContent = null; var keysTask = Task.Run(async() => { // wait until the test extension has begun initialization - this way we know // host initialization is in progress await TestHelpers.Await(() => { return(!TestWebHookExtension.Initializing); }); // make the keys request while during initialization BEFORE the extension // has had a chance to create the extension system key var response = await _testHost.HttpClient.SendAsync(keysRequest); Assert.Equal(HttpStatusCode.OK, response.StatusCode); keysContent = await response.Content.ReadAsAsync <JObject>(); }); var restartTask = _testHost.RestartAsync(CancellationToken.None); await Task.WhenAll(restartTask, keysTask); // verify the extension system key is present JArray keys = (JArray)keysContent["keys"]; var extensionKey = (JObject)keys.Cast <JObject>().SingleOrDefault(p => (string)p["name"] == "testwebhook_extension"); Assert.NotNull(extensionKey); string extensionKeyValue = (string)extensionKey["value"]; Assert.False(string.IsNullOrEmpty(extensionKeyValue)); } finally { TestWebHookExtension.Initializing = false; TestWebHookExtension.Delay = 0; } }
internal static List <SensorLocationModel> ParseLocations(string responseBody) { List <SensorLocationModel> sensorList = new List <SensorLocationModel>(); JArray locations = JArray.Parse(responseBody); foreach (var sensor in locations.Cast <JObject>()) { var sensorLocation = new SensorLocationModel( (string)sensor["x"], (string)sensor["y"], (string)sensor["id"] ); sensorList.Add(sensorLocation); } logger.Info("Json data parsed into c# objects successfully!"); return(sensorList); }
/// <summary> /// Gets the zone settings for the zone with the specified <paramref name="zoneId"/>. /// </summary> /// <seealso href="https://api.cloudflare.com/#zone-settings-get-all-zone-settings"/> public static async Task <IEnumerable <ZoneSettingBase> > GetAllZoneSettingsAsync( this HttpClient client, IdentifierTag zoneId, CancellationToken cancellationToken, CloudFlareAuth auth) { if (zoneId == null) { throw new ArgumentNullException(nameof(zoneId)); } Uri uri = new Uri(CloudFlareConstants.BaseUri, $"zones/{zoneId}/settings"); JArray jsonSettings = await client.GetCloudFlareResultAsync <JArray>(uri, auth, cancellationToken) .ConfigureAwait(false); return(GetZoneSetting(jsonSettings.Cast <JObject>())); }
public static void Capitalize(this JArray jArr) { foreach (var x in jArr.Cast <JToken>().ToList()) { var childObj = x as JObject; if (childObj != null) { childObj.Capitalize(); continue; } var childArr = x as JArray; if (childArr != null) { childArr.Capitalize(); continue; } } }
private BunqEntity[] GetEntities(JArray response) { var entities = new List <BunqEntity>(); foreach (var element in response.Cast <JObject>()) { var property = (JProperty)element.First; var propertyValue = (JObject)property.Value; var type = EntityTypeCollection.FindByName(property.Name); var entity = (BunqEntity)propertyValue.ToObject(type); entity.ApiClient = this; entities.Add(entity); } return(entities.ToArray()); }
private EntityList DeserializeList(Type listType, JArray jArray) { var entityType = EntityMatrix.FindByList(listType).EntityType; var repo = RF.Find(entityType); //先从数据库中找出所有提供了 Id 的实体。 var idList = jArray.Cast <JObject>().Select(item => TryGetId(item)) .Where(id => id != null).ToArray(); var list = repo.GetByIdList(idList); //依次反序列化数组中的实体: //如果有 Id,则在数据库中查询出的列表 list 中查找出对应的实体,然后反序列化值。否则,直接构造新实体。 foreach (JObject jEntity in jArray) { var child = FindOrCreate(list, jEntity); DeserializeProperties(jEntity, child); } return(list); }
public IEnumerable <Object[]> GetData(MethodInfo methodInfo) { using (TextReader streamReader = File.OpenText(FileName)) { using (JsonReader jsonReader = new JsonTextReader(streamReader)) { JObject jDataInfo = JObject.Load(jsonReader); _displayNameFormat = jDataInfo.Value <String>("displayName"); JArray jData = (JArray)jDataInfo.GetValue("data"); ParameterInfo[] parameters = methodInfo.GetParameters(); IEnumerable <Object[]> data = jData .Cast <JObject>() .Select(jObject => parameters .Select(parameter => jObject.TryGetValue(parameter.Name, out JToken value) ? value.ToObject(parameter.ParameterType) : parameter.ParameterType.GetDefaultValue()) .ToArray()); return(data); } } }
public void Execute() { var keys = _actions .Cast <JObject>().Where(action => { var actionType = action.GetValue("type").Value <string>(); return(actionType == "keyDown"); }) .Select(action => { var keyCode = action["value"].Value <string>()[0]; if (!TryGetKey(keyCode, out var key)) { throw new NotSupportedException("Unknown key code: " + (int)keyCode); } return(key); }) .ToList(); if (keys.Any()) { Microsoft.Test.Input.Keyboard.Type(keys.Last(), keys.Take(keys.Count - 1).ToArray()); } }
internal List <JObject> ConvertToApiModel(List <LocalizationResource> resources) { var result = new JArray(); foreach (var resource in resources) { var segments = resource.ResourceKey.Split(new [] { '.', '+' }, StringSplitOptions.RemoveEmptyEntries).ToList(); void AddChildrenNodes(JArray children, List <string> list, LocalizationResource localizationResource, int currentLevel, int depth) { while (true) { var(head, tail) = list; var el = children.FirstOrDefault(c => c[_segmentPropertyName] != null && c[_segmentPropertyName].ToString().Equals(head, StringComparison.InvariantCultureIgnoreCase)); if (el == null) { el = new JObject { [_segmentPropertyName] = head }; if (currentLevel == depth) { // process leaf var key = localizationResource.ResourceKey; el["resourceKey"] = key; el["displayKey"] = $"{key.Substring(0, key.Length > _listDisplayLength ? _listDisplayLength : key.Length)}{(key.Length > _listDisplayLength ? "..." : "")}"; el["titleKey"] = $"{(key.Length > _popupTitleLength ? "..." : "")}{key.Substring(key.Length - Math.Min(_popupTitleLength, key.Length))}"; el["syncedFromCode"] = localizationResource.FromCode; el["isModified"] = localizationResource.IsModified; el["allowDelete"] = !localizationResource.FromCode; el["translation"] = localizationResource.Translations.FindByLanguage(CultureInfo.InvariantCulture)?.Value; foreach (var language in Languages) { el["translation-" + language.Code] = localizationResource.Translations.FindByLanguage(language.Code)?.Value; } } else { el["_children"] = new JArray(); el["_classes"] = new JObject { ["row"] = new JObject { ["parent-row"] = true } }; } children.Add(el); } if (tail.Any()) { children = el["_children"] as JArray; list = tail; currentLevel += 1; continue; } break; } } if (segments.Any()) { AddChildrenNodes(result, segments, resource, 0, segments.Count - 1); } } return(result.Cast <JObject>().ToList()); }
public static UpdateInfo[] ParseArray(JArray jsonArray) { return(jsonArray.Cast <JObject>().Select(jobject => new UpdateInfo(jobject)).ToArray()); }
private void BindArray(JArray token, FilterPropertyType propertyType, JsonSerializer serializer) { token.Cast <JValue>().ToList().ForEach(x => BindValue(x, propertyType, serializer)); }