Exemple #1
0
        public IPercentilesAggregation Deserialize(ref JsonReader reader, IJsonFormatterResolver formatterResolver)
        {
            if (reader.GetCurrentJsonToken() != JsonToken.BeginObject)
            {
                reader.ReadNextBlock();
                return(null);
            }

            var count       = 0;
            var percentiles = new PercentilesAggregation();

            while (reader.ReadIsInObject(ref count))
            {
                var propertyName = reader.ReadPropertyNameSegmentRaw();
                if (AutomataDictionary.TryGetValue(propertyName, out var value))
                {
                    switch (value)
                    {
                    case 0:
                        percentiles.Method = formatterResolver.GetFormatter <HDRHistogramMethod>()
                                             .Deserialize(ref reader, formatterResolver);
                        break;

                    case 1:
                        percentiles.Method = formatterResolver.GetFormatter <TDigestMethod>()
                                             .Deserialize(ref reader, formatterResolver);
                        break;

                    case 2:
                        percentiles.Field = reader.ReadString();
                        break;

                    case 3:
                        percentiles.Script = formatterResolver.GetFormatter <IScript>()
                                             .Deserialize(ref reader, formatterResolver);
                        break;

                    case 4:
                        percentiles.Missing = reader.ReadDouble();
                        break;

                    case 5:
                        percentiles.Percents = formatterResolver.GetFormatter <IEnumerable <double> >()
                                               .Deserialize(ref reader, formatterResolver);
                        break;

                    case 6:
                        percentiles.Meta = formatterResolver.GetFormatter <IDictionary <string, object> >()
                                           .Deserialize(ref reader, formatterResolver);
                        break;

                    case 7:
                        percentiles.Keyed = reader.ReadBoolean();
                        break;
                    }
                }
            }

            return(percentiles);
        }
Exemple #2
0
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            var o           = JObject.Load(reader);
            var properties  = o.Properties().ToDictionary(p => p.Name, p => p.Value);
            var percentiles = new PercentilesAggregation();

            ReadMetricProperties(percentiles, properties);
            percentiles.Method = ReadMethodProperty(properties);
            if (properties.TryGetValue("percents", out JToken percentsToken))
            {
                percentiles.Percents = percentsToken.ToObject <List <double> >();
            }
            return(percentiles);
        }