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(); }
/// <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(); }