CSharp · Console
using System;
using Newtonsoft.Json;
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)
return null;
var array = JArray.Load(reader);
var coordenada = (existingValue as Coordenada ?? new Coordenada());
coordenada.Latitude = (float)array[0];
coordenada.Longitude = (float)array[1];
return coordenada;
}
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 class Coordenada
{
public float Latitude {get; set;}
public float Longitude {get; set;}
}
public class Program
{
public static void Main()
{
var json = @"
[
[-23.45317,-46.707126],
[-23.453181,-46.707125],
[-23.453196,-46.707123],
[-23.453484,-46.706913],
[-23.453593,-46.706865],
[-23.453759,-46.706795],
[-23.453942,-46.706744],
[-23.45431,-46.7066],
[-23.454667,-46.706528],
[-23.455409,-46.70635],
[-23.45572,-46.706264],
[-23.455805,-46.706178],
[-23.45586,-46.706151],
[-23.455983,-46.706157],
[-23.456166,-46.706137],
[-23.457182,-46.705768],
[-23.457373,-46.705762],
[-23.457346,-46.705728],
[-23.457339,-46.705664],
[-23.457388,-46.705554],
[-23.457451,-46.705489],
[-23.457565,-46.705387],
[-23.457713,-46.705283],
[-23.457778,-46.705215],
[-23.457809,-46.705126],
[-23.457822,-46.705061],
[-23.45783,-46.704993],
[-23.457832,-46.704927],
[-23.457819,-46.704846],
[-23.457761,-46.704654],
[-23.457719,-46.704532],
[-23.457543,-46.704264],
[-23.457378,-46.704054],
[-23.457296,-46.703964],
[-23.457257,-46.703931]
]
";
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);
}
}