How do I deserialize json string to object depends on json content? I would like to do this with Newtonsoft.Json, since I am using it in the whole project and it is simple for use.
Let me explain by example: I have json string which can have to be different property object. Content depends on the tool that generates the json files, and I cannot predict the content base on the filename or something like that.
For example, I can have json file:
{  
   "FileCreationDate":"29-08-2018 14:56:30",
   "MessageType":2,
   "Messages":[  
      {  
         "MessageSequenceNumber":1,
         "ModalType":5,
         "Message":{  
            "TransactionValue":5,
            "ProductAmount":5
         }
      }
   ]
}
Or I can have something like this:
{  
   "FileCreationDate":"29-08-2018 14:56:30",
   "MessageType":1,
   "Messages":[  
      {  
         "MessageSequenceNumber":1,
         "ModalType":5,
         "Message":{  
            "TransactionBusinessDate":"29-08-2018 14:54:29",
            "TransactionStatus":5,
            "TicketNumber":5,
         }
      }
   ]
}
You can see that both json strings have same properties except message object in messages list. I want to deserialize to this data structure:
public class EventFileDto
{
    public string FileCreationDate { get; set; }
    public MessageType MessageType { get; set; }
    public IEnumerable<MessageDetailsDto> Messages { get; set; }
}
public class MessageDetailsDto
{
    public int MessageSequenceNumber { get; set; }
    public int ModalType { get; set; }
    public EventMessageDto EventMessage { get; set; }
    public TransactionMessage TransactionMessage { get; set; }
}
If json string is from the first example I want deserialize message object to EventMessage property, and TransactionMessage property should be null.
In the case of second json string, I want the opposite.
I don't want use dynamic type, since mapping to the entity would be more complicated.
How can this be done?
Thank you for your help.
 
    