コード例 #1
0
        private IAggregate GetGeoBoundsAggregate(JsonReader reader, JsonSerializer serializer)
        {
            reader.Read();
            var o = JObject.Load(reader);

            if (o == null)
            {
                return(null);
            }
            var    geoBoundsMetric = new GeoBoundsAggregate();
            JToken topLeftToken;

            if (o.TryGetValue(Parser.TopLeft, out topLeftToken) && topLeftToken != null)
            {
                var topLeft = topLeftToken.ToObject <LatLon>();
                if (topLeft != null)
                {
                    geoBoundsMetric.Bounds.TopLeft = topLeft;
                }
            }

            JToken bottomRightToken;

            if (o.TryGetValue(Parser.BottomRight, out bottomRightToken) && bottomRightToken != null)
            {
                var bottomRight = bottomRightToken.ToObject <LatLon>();
                if (bottomRight != null)
                {
                    geoBoundsMetric.Bounds.BottomRight = bottomRight;
                }
            }
            reader.Read();
            return(geoBoundsMetric);
        }
コード例 #2
0
        private IAggregate GetGeoBoundsAggregate(ref JsonReader reader, IJsonFormatterResolver formatterResolver, IReadOnlyDictionary <string, object> meta)
        {
            if (reader.GetCurrentJsonToken() == JsonToken.Null)
            {
                reader.ReadNext();
                return(null);
            }

            var geoBoundsMetric = new GeoBoundsAggregate {
                Meta = meta
            };
            var latLonFormatter = formatterResolver.GetFormatter <LatLon>();
            var count           = 0;

            while (reader.ReadIsInObject(ref count))
            {
                var propertyName = reader.ReadPropertyNameSegmentRaw();
                if (GeoBoundsFields.TryGetValue(propertyName, out var value))
                {
                    switch (value)
                    {
                    case 0:
                        geoBoundsMetric.Bounds.TopLeft =
                            latLonFormatter.Deserialize(ref reader, formatterResolver);
                        break;

                    case 1:
                        geoBoundsMetric.Bounds.BottomRight =
                            latLonFormatter.Deserialize(ref reader, formatterResolver);
                        break;
                    }
                }
                else
                {
                    reader.ReadNextBlock();
                }
            }

            return(geoBoundsMetric);
        }
コード例 #3
0
		private IAggregate GetGeoBoundsMetric(JsonReader reader, JsonSerializer serializer)
		{
			reader.Read();
			var o = JObject.Load(reader);
			if (o == null)
				return null;
			var geoBoundsMetric = new GeoBoundsAggregate();
			JToken topLeftToken;
			if (o.TryGetValue("top_left", out topLeftToken) && topLeftToken != null)
			{
				var topLeft = topLeftToken.ToObject<LatLon>();
				if (topLeft != null)
					geoBoundsMetric.Bounds.TopLeft = topLeft;
			}

			JToken bottomRightToken;
			if (o.TryGetValue("bottom_right", out bottomRightToken) && bottomRightToken != null)
			{
				var bottomRight = bottomRightToken.ToObject<LatLon>();
				if (bottomRight != null)
					geoBoundsMetric.Bounds.BottomRight = bottomRight;
			}
			reader.Read();
			return geoBoundsMetric;
		}