internal static void WriteValue(JsonWriter writer, PrimitiveTypeCode typeCode, object value) { switch (typeCode) { case PrimitiveTypeCode.Char: writer.WriteValue((char)value); break; case PrimitiveTypeCode.CharNullable: writer.WriteValue((value == null) ? (char?)null : (char)value); break; case PrimitiveTypeCode.Boolean: writer.WriteValue((bool)value); break; case PrimitiveTypeCode.BooleanNullable: writer.WriteValue((value == null) ? (bool?)null : (bool)value); break; case PrimitiveTypeCode.SByte: writer.WriteValue((sbyte)value); break; case PrimitiveTypeCode.SByteNullable: writer.WriteValue((value == null) ? (sbyte?)null : (sbyte)value); break; case PrimitiveTypeCode.Int16: writer.WriteValue((short)value); break; case PrimitiveTypeCode.Int16Nullable: writer.WriteValue((value == null) ? (short?)null : (short)value); break; case PrimitiveTypeCode.UInt16: writer.WriteValue((ushort)value); break; case PrimitiveTypeCode.UInt16Nullable: writer.WriteValue((value == null) ? (ushort?)null : (ushort)value); break; case PrimitiveTypeCode.Int32: writer.WriteValue((int)value); break; case PrimitiveTypeCode.Int32Nullable: writer.WriteValue((value == null) ? (int?)null : (int)value); break; case PrimitiveTypeCode.Byte: writer.WriteValue((byte)value); break; case PrimitiveTypeCode.ByteNullable: writer.WriteValue((value == null) ? (byte?)null : (byte)value); break; case PrimitiveTypeCode.UInt32: writer.WriteValue((uint)value); break; case PrimitiveTypeCode.UInt32Nullable: writer.WriteValue((value == null) ? (uint?)null : (uint)value); break; case PrimitiveTypeCode.Int64: writer.WriteValue((long)value); break; case PrimitiveTypeCode.Int64Nullable: writer.WriteValue((value == null) ? (long?)null : (long)value); break; case PrimitiveTypeCode.UInt64: writer.WriteValue((ulong)value); break; case PrimitiveTypeCode.UInt64Nullable: writer.WriteValue((value == null) ? (ulong?)null : (ulong)value); break; case PrimitiveTypeCode.Single: writer.WriteValue((float)value); break; case PrimitiveTypeCode.SingleNullable: writer.WriteValue((value == null) ? (float?)null : (float)value); break; case PrimitiveTypeCode.Double: writer.WriteValue((double)value); break; case PrimitiveTypeCode.DoubleNullable: writer.WriteValue((value == null) ? (double?)null : (double)value); break; case PrimitiveTypeCode.DateTime: writer.WriteValue((DateTime)value); break; case PrimitiveTypeCode.DateTimeNullable: writer.WriteValue((value == null) ? (DateTime?)null : (DateTime)value); break; #if !NET20 case PrimitiveTypeCode.DateTimeOffset: writer.WriteValue((DateTimeOffset)value); break; case PrimitiveTypeCode.DateTimeOffsetNullable: writer.WriteValue((value == null) ? (DateTimeOffset?)null : (DateTimeOffset)value); break; #endif case PrimitiveTypeCode.Decimal: writer.WriteValue((decimal)value); break; case PrimitiveTypeCode.DecimalNullable: writer.WriteValue((value == null) ? (decimal?)null : (decimal)value); break; case PrimitiveTypeCode.Guid: writer.WriteValue((Guid)value); break; case PrimitiveTypeCode.GuidNullable: writer.WriteValue((value == null) ? (Guid?)null : (Guid)value); break; case PrimitiveTypeCode.TimeSpan: writer.WriteValue((TimeSpan)value); break; case PrimitiveTypeCode.TimeSpanNullable: writer.WriteValue((value == null) ? (TimeSpan?)null : (TimeSpan)value); break; case PrimitiveTypeCode.Uri: writer.WriteValue((Uri)value); break; case PrimitiveTypeCode.String: writer.WriteValue((string)value); break; case PrimitiveTypeCode.Bytes: writer.WriteValue((byte[])value); break; default: { throw CreateUnsupportedTypeException(writer, value); } } }
/// <summary> /// Writes the JSON representation of the object. /// </summary> /// <param name="writer">The <see cref="JsonWriter"/> to write to.</param> /// <param name="value">The value.</param> /// <param name="serializer">The calling serializer.</param> public abstract void WriteJson(JsonWriter writer, object value, JsonSerializer serializer);
/// <summary> /// Generates GeoJson for the given geometry collection. /// </summary> /// <param name="writer"></param> /// <param name="geometryCollection"></param> internal static void Write(JsonWriter writer, GeometryCollection geometryCollection) { if (writer == null) { throw new ArgumentNullException("writer"); } if (geometryCollection == null) { throw new ArgumentNullException("geometryCollection"); } writer.WriteStartObject(); writer.WritePropertyName("type"); writer.WriteValue("GeometryCollection"); writer.WritePropertyName("geometries"); writer.WriteStartArray(); foreach (var geometry in geometryCollection) { GeoJsonConverter.Write(writer, geometry); } writer.WriteEndArray(); writer.WriteEndObject(); }
private static JsonWriterException CreateUnsupportedTypeException(JsonWriter writer, object value) { return JsonWriterException.Create(writer, "Unsupported type: {0}. Use the JsonSerializer class to get the object's JSON representation.".FormatWith(CultureInfo.InvariantCulture, value.GetType()), null); }
/// <summary> /// Generates GeoJson for the given geometry. /// </summary> /// <param name="writer"></param> /// <param name="geometry"></param> /// <returns></returns> internal static void Write(JsonWriter writer, Polygon geometry) { if (writer == null) { throw new ArgumentNullException("writer"); } if (geometry == null) { throw new ArgumentNullException("geometry"); } writer.WriteStartObject(); writer.WritePropertyName("type"); writer.WriteValue("Polygon"); writer.WritePropertyName("coordinates"); writer.WriteStartArray(); writer.WriteStartArray(); foreach (var coordinate in geometry.Ring.Coordinates) { writer.WriteStartArray(); writer.WriteValue(coordinate.Longitude); writer.WriteValue(coordinate.Latitude); writer.WriteEndArray(); } writer.WriteEndArray(); foreach(var hole in geometry.Holes) { writer.WriteStartArray(); foreach (var coordinate in hole.Coordinates) { writer.WriteStartArray(); writer.WriteValue(coordinate.Longitude); writer.WriteValue(coordinate.Latitude); writer.WriteEndArray(); } writer.WriteEndArray(); } writer.WriteEndArray(); writer.WriteEndObject(); }
/// <summary> /// Generates GeoJson for the given geometry. /// </summary> /// <param name="writer"></param> /// <param name="geometry"></param> /// <returns></returns> internal static void Write(JsonWriter writer, Point geometry) { if (writer == null) { throw new ArgumentNullException("writer"); } if (geometry == null) { throw new ArgumentNullException("geometry"); } writer.WriteStartObject(); writer.WritePropertyName("type"); writer.WriteValue("Point"); writer.WritePropertyName("coordinates"); writer.WriteStartArray(); writer.WriteValue(geometry.Coordinate.Longitude); writer.WriteValue(geometry.Coordinate.Latitude); writer.WriteEndArray(); writer.WriteEndObject(); }
/// <summary> /// Generates GeoJson for the given geometry. /// </summary> /// <param name="writer"></param> /// <param name="geometry"></param> internal static void Write(JsonWriter writer, Geometry geometry) { if (writer == null) { throw new ArgumentNullException("writer"); } if (geometry == null) { throw new ArgumentNullException("geometry"); } if (geometry is LineairRing) { GeoJsonConverter.Write(writer, geometry as LineairRing); } else if (geometry is Point) { GeoJsonConverter.Write(writer, geometry as Point); } else if (geometry is LineString) { GeoJsonConverter.Write(writer, geometry as LineString); } else if (geometry is Polygon) { GeoJsonConverter.Write(writer, geometry as Polygon); } else if (geometry is MultiPoint) { GeoJsonConverter.Write(writer, geometry as MultiPoint); } else if (geometry is MultiPolygon) { GeoJsonConverter.Write(writer, geometry as MultiPolygon); } else if (geometry is MultiLineString) { GeoJsonConverter.Write(writer, geometry as MultiLineString); } else if (geometry is GeometryCollection) { GeoJsonConverter.Write(writer, geometry as GeometryCollection); } else { throw new Exception(string.Format("Unknown geometry of type: {0}", geometry.GetType())); } }
/// <summary> /// Generates GeoJson for the given geometry collection. /// </summary> /// <param name="writer"></param> /// <param name="geometryCollection"></param> internal static void Write(JsonWriter writer, MultiLineString geometryCollection) { if (writer == null) { throw new ArgumentNullException("writer"); } if (geometryCollection == null) { throw new ArgumentNullException("geometryCollection"); } writer.WriteStartObject(); writer.WritePropertyName("type"); writer.WriteValue("MultiLineString"); writer.WritePropertyName("coordinates"); writer.WriteStartArray(); foreach (var geometry in geometryCollection) { writer.WriteStartArray(); foreach (var coordinate in geometry.Coordinates) { writer.WriteStartArray(); writer.WriteValue(coordinate.Longitude); writer.WriteValue(coordinate.Latitude); writer.WriteEndArray(); } writer.WriteEndArray(); } writer.WriteEndArray(); writer.WriteEndObject(); }
/// <summary> /// Generates GeoJson for the given attribute collection. /// </summary> /// <param name="writer"></param> /// <param name="attributes"></param> internal static void Write(JsonWriter writer, GeometryAttributeCollection attributes) { if (writer == null) { throw new ArgumentNullException("writer"); } if (attributes == null) { throw new ArgumentNullException("attributes"); } writer.WriteStartObject(); foreach (var attribute in attributes) { writer.WritePropertyName(attribute.Key); writer.WriteValue(attribute.Value); } writer.WriteEndObject(); }
/// <summary> /// Generates GeoJson for the given feature. /// </summary> /// <param name="writer"></param> /// <param name="feature"></param> internal static void Write(JsonWriter writer, Feature feature) { if (writer == null) { throw new ArgumentNullException("writer"); } if (feature == null) { throw new ArgumentNullException("feature"); } writer.WriteStartObject(); writer.WritePropertyName("type"); writer.WriteValue("Feature"); writer.WritePropertyName("properties"); GeoJsonConverter.Write(writer, feature.Attributes); writer.WritePropertyName("geometry"); GeoJsonConverter.Write(writer, feature.Geometry); writer.WriteEndObject(); }
/// <summary> /// Generates GeoJson for the given feature collection. /// </summary> /// <param name="writer"></param> /// <param name="featureCollection"></param> internal static void Write(JsonWriter writer, FeatureCollection featureCollection) { if (writer == null) { throw new ArgumentNullException("writer"); } if (featureCollection == null) { throw new ArgumentNullException("featureCollection"); } writer.WriteStartObject(); writer.WritePropertyName("type"); writer.WriteValue("FeatureCollection"); writer.WritePropertyName("features"); writer.WriteStartArray(); foreach(var feature in featureCollection) { GeoJsonConverter.Write(writer, feature); } writer.WriteEndArray(); writer.WriteEndObject(); }
/// <summary> /// Generates GeoJson for the given attribute collection. /// </summary> /// <param name="writer"></param> /// <param name="attributes"></param> internal static void Write(JsonWriter writer, GeometryAttributeCollection attributes) { if (writer == null) { throw new ArgumentNullException("writer"); } if (attributes == null) { throw new ArgumentNullException("attributes"); } writer.WriteStartObject(); var keys = new HashSet<string>(); foreach (var attribute in attributes) { if (!keys.Contains(attribute.Key)) { writer.WritePropertyName(attribute.Key); writer.WriteValue(attribute.Value); keys.Add(attribute.Key); } } writer.WriteEndObject(); }
internal static JsonWriterException Create(JsonWriter writer, string message, Exception ex) { return Create(writer.ContainerPath, message, ex); }