/// <summary> /// Execute processing of facet fields /// </summary> private static FacetItemField ProcessFacetFields(JsonReader jsonReader) { var facetName = (string)jsonReader.Value; var facetItem = new FacetItemField(facetName); jsonReader.Read(); // Start array jsonReader.Read(); // First element while (jsonReader.TokenType != JsonToken.EndArray) { if (jsonReader.Path.StartsWith($"facet_counts.facet_fields.{facetName}")) { var value = new FacetItemFieldValue { Key = (string)jsonReader.Value, Quantity = (long)jsonReader.ReadAsInt32() }; ((List <FacetItemFieldValue>)facetItem.Values).Add(value); } jsonReader.Read(); } return(facetItem); }
private void ProcessFacetFieldBuckets(string root, IFacetParameter <TDocument> facetParameter, string facetName, IFacetItem facetItem) { this._jsonReader.Read();// Starts array while (this._jsonReader.Path.StartsWith($"{root}.{facetName}.buckets[")) { var initialPath = this._jsonReader.Path; this._jsonReader.Read();// "val" property var key = this._jsonReader.ReadAsString(); this._jsonReader.Read();// "count" property var count = this._jsonReader.ReadAsInt32(); var value = new FacetItemFieldValue { Key = key, Quantity = (long)count }; // Go to next token to verify subfacet this._jsonReader.Read(); // Subfacets if (this._jsonReader.TokenType != JsonToken.EndObject) { this.GetFacetItems( initialPath, facetParameter.Facets, out var facetItems); value.Facets = facetItems; } ((List <FacetItemFieldValue>)((FacetItemField)facetItem).Values).Add(value); // Try closes bucket object while (this._jsonReader.TokenType != JsonToken.EndObject) { this._jsonReader.Read(); } this._jsonReader.Read();// Starts next bucket object } }