using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Newtonsoft.Json.Linq;
public static void Main()
""NumeroAtracacao"": ""22/2222"",
""NumeroViagem"": ""02002 00303"",
""Status"": ""DESATRACADO"",
""Joint"": ""UCLA UCLA"",
""Servico"": ""AMERICA CENTRAL"",
""LiberacaoRecebimento"": ""21/05/2018 07:00:00"",
""Nome"": ""MONTE CERVANTES"",
""CodigoGeParcei"": null,
""ImagemNavio"": ""......."",
""CapacidadeTeus"": 5560,
""ChegadaPrevista"": ""27/05/2018 12:00:00"",
""AtracacaoPrevista"": ""29/05/2018 07:00:00"",
""SaidaPrevista"": ""30/05/2018 19:00:00"",
""DeadLine"": ""25/05/2018 12:00:00""
Viagem viagem = JsonConvert.DeserializeObject<Viagem>(json);
[JsonConverter(typeof(JsonPathConverter))]
public partial class Viagem
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[JsonProperty("Viagem.Id")]
public int Id { get; set; }
public string IdCtis { get; set; }
[JsonProperty("Viagem.NumeroAtracacao")]
public string NumeroAtracacao { get; set; }
[JsonProperty("Viagem.NumeroViagem")]
public string NumeroViagem { get; set; }
[JsonProperty("Viagem.Status")]
public string Status { get; set; }
[JsonProperty("Viagem.Joint")]
public string Joint { get; set; }
[JsonProperty("Viagem.Servico")]
public string Servico { get; set; }
[JsonProperty("Viagem.MotivoEspera")]
public string MotivoEspera { get; set; }
[JsonProperty("Viagem.LiberacaoRecebimento")]
public string LiberacaoRecebimento { get; set; }
[JsonProperty("Viagem.ChegadaPrevista")]
public string ChegadaPrevista { get; set; }
[JsonProperty("Viagem.AtracacaoPrevista")]
public string AtracacaoPrevista { get; set; }
[JsonProperty("Viagem.SaidaPrevista")]
public string SaidaPrevista { get; set; }
[JsonProperty("Viagem.DeadLine")]
public string DeadLine { get; set; }
public string Chegada { get; set; }
public string Atracacao { get; set; }
public string Saida { get; set; }
public string InicioOperacao { get; set; }
public string FimOperacao { get; set; }
public string TipoOperacao { get; set; }
public string CodigoCodesp { get; set; }
public decimal? CaladoAtracacao { get; set; }
public decimal? CaladoDesatracacao { get; set; }
public string NumeroViagemImportacao { get; set; }
public string NumeroViagemExportacao { get; set; }
public string PrevisaoDescarga { get; set; }
public string PrevisaoEmbarque { get; set; }
public string PrevisaoRemocao { get; set; }
public string LocalAtracacao { get; set; }
[JsonProperty("Viagem.Navio.Nome")]
public string Navio_Nome { get; set; }
[JsonProperty("Viagem.Navio.ImagemNavio")]
public string ImagemNavio { get; set; }
[JsonProperty("Viagem.Navio.Comprimento")]
public decimal? Navio_Comprimento { get; set; }
[JsonProperty("Viagem.Navio.Lloyd")]
public string Navio_Lloyd { get; set; }
[JsonProperty("Viagem.Navio.CallSign")]
public string Navio_CallSign { get; set; }
[JsonProperty("Viagem.Navio.CapacidadeTeus")]
public int? Navio_CapacidadeTeus { get; set; }
[JsonProperty("Viagem.Navio.Shortname")]
public string Navio_Shortname { get; set; }
[JsonProperty("Viagem.Navio.Armador.Id")]
public int? Armador_Id { get; set; }
[JsonProperty("Viagem.Navio.Armador.CodigoGeParcei")]
public string Armador_CodigoGeParcei { get; set; }
[JsonProperty("Viagem.Navio.Armador.Nome")]
public string Armador_Nome { get; set; }
[JsonProperty("Viagem.Navio.Armador.Sigla")]
public string Armador_Sigla { get; set; }
[JsonProperty("Viagem.Navio.Armador.CnpjCpf")]
public string Armador_CnpjCpf { get; set; }
[JsonProperty("Viagem.Navio.Armador.Endereco")]
public string Armador_Endereco { get; set; }
[JsonProperty("Viagem.Navio.Armador.Cep")]
public string Armador_Cep { get; set; }
[JsonProperty("Viagem.Navio.Armador.Site")]
public string Armador_Site { get; set; }
public virtual ContainerViagem ContainerViagem { get; set; }
public class ContainerViagem { }
class JsonPathConverter : JsonConverter
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
JObject jo = JObject.Load(reader);
object targetObj = Activator.CreateInstance(objectType);
foreach (PropertyInfo prop in objectType.GetProperties().Where(p => p.CanRead && p.CanWrite))
JsonPropertyAttribute att = prop.GetCustomAttributes(true)
.OfType<JsonPropertyAttribute>()
string jsonPath = (att != null ? att.PropertyName : prop.Name);
JToken token = jo.SelectToken(jsonPath);
if (token != null && token.Type != JTokenType.Null)
object value = token.ToObject(prop.PropertyType, serializer);
prop.SetValue(targetObj, value, null);
public override bool CanConvert(Type objectType)
public override bool CanWrite
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
throw new NotImplementedException();