using Newtonsoft.Json.Linq;
public class CoordenadaConverter : JsonConverter
public override bool CanConvert(Type objectType)
return objectType == typeof(Coordenada);
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
if (reader.TokenType == JsonToken.Null)
var array = JArray.Load(reader);
var coordenada = (existingValue as Coordenada ?? new Coordenada());
coordenada.Latitude = (float)array[0];
coordenada.Longitude = (float)array[1];
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
var coordenada = (Coordenada)value;
serializer.Serialize(writer, new[] { coordenada.Latitude, coordenada.Longitude });
[JsonConverter(typeof(CoordenadaConverter))]
public float Latitude {get; set;}
public float Longitude {get; set;}
public static void Main()
var deserialized = JsonConvert.DeserializeObject<Coordenada[]>(json);
foreach (var coordenada in deserialized)
Console.WriteLine("Latitude: " + coordenada.Latitude + ", Longitude: " + coordenada.Longitude);
var serialized = JsonConvert.SerializeObject(deserialized, Formatting.Indented);
Console.WriteLine(serialized);