예제 #1
0
        public override void Write(Utf8JsonWriter writer, FeatureCollection value, JsonSerializerOptions options)
        {
            writer.WriteStartObject();
            writer.WriteString("type", nameof(GeoJsonObjectType.FeatureCollection));

            StjGeometryConverter.WriteBBox(writer, value.BoundingBox, options, null);

            writer.WriteStartArray("features");
            foreach (var feature in value)
            {
                JsonSerializer.Serialize(writer, feature, options);
            }
            writer.WriteEndArray();

            writer.WriteEndObject();
        }
예제 #2
0
        /// <summary>
        /// Writes the JSON representation of the object.
        /// </summary>
        /// <param name="writer">The <see cref="T:Newtonsoft.Json.JsonWriter"/> to write to.</param>
        /// <param name="value">The value.</param>
        /// <param name="options">The calling serializer.</param>
        public override void Write(Utf8JsonWriter writer, IFeature value, JsonSerializerOptions options)
        {
            if (value == null)
            {
                writer.WriteNullValue();
                return;
            }

            writer.WriteStartObject();

            // type
            writer.WriteString("type", nameof(GeoJsonObjectType.Feature));

            // Add the id here if present.
            if (value.GetOptionalId(_idPropertyName) is object id)
            {
                writer.WritePropertyName("id");
                JsonSerializer.Serialize(writer, id, id.GetType(), options);
            }

            // bbox (optional)
            var bbox = value.BoundingBox;

            StjGeometryConverter.WriteBBox(writer, bbox, options, value.Geometry);

            // geometry
            if (value.Geometry != null || !options.IgnoreNullValues)
            {
                writer.WritePropertyName("geometry");
                JsonSerializer.Serialize(writer, value.Geometry, options);
            }

            // properties
            if (value.Attributes != null || !options.IgnoreNullValues)
            {
                writer.WritePropertyName("properties");
                JsonSerializer.Serialize(writer, value.Attributes, options);
            }

            writer.WriteEndObject();
        }