I have the following classes:
internal class RequestPayload1
{
    [DataMember]
    [JsonProperty(Required = Required.Always)]
    internal string Date { get; set; }
    [DataMember]
    [JsonProperty(Required = Required.Always)]
    internal string State { get; set; }
    [DataMember]
    [JsonProperty]
    internal string Properties { get; set; }
}
internal class RequestPayload2
{
    [DataMember]
    [JsonProperty(Required = Required.Always)]
    internal string Id { get; set; }
    [DataMember]
    [JsonProperty(Required = Required.Always)]
    internal string Name { get; set; }
    [DataMember]
    [JsonProperty]
    internal string Location { get; set; }
}
I created an object of the two classes EntityEvent1 and EntityEvent2 class like this:
RequestPayload1 payload1 = new RequestPayload1()
{
    Date = "date1",
    State = "state1",
    Properties = "properties1"
};
RequestPayload2 payload2 = new RequestPayload2()
{
    Id = "id1",
    Name = "name1",
    Location = "location1"
};
I have a class:
internal class RequestData
{
    [DataMember]
    [JsonProperty(Required = Required.Always)]
    internal string RequestHeader { get; set; }
    [DataMember]
    [JsonProperty(Required = Required.Always)]
    internal JObject RequestPayload { get; set; }
}
I need the RequestPayload to be set to either RequestPayload1 or RequestPayload2. That is the reason I used the type JObject for it. But when I serialize the payloads like this, the RequestPayload is getting the object in an invalid Json format. Mainly the double quotes replaced with single quotes:
string requestPayload1 = JsonConvert.SerializeObject(payload1);
RequestData requestData1 = new RequestData()
{
   RequestHeader = "requestHeader1",
   RequestPayload = new JObject(payload1);
};
string requestPayload2 = JsonConvert.SerializeObject(payload2);
RequestData requestData2 = new RequestData()
{
   RequestHeader = "requestHeader2",
   RequestPayload = new JObject(payload2);
}
requestData1 and requestData2 when deserialized are giving:
"Request": {
    "RequestHeader": "requestHeader1",
    "RequestPayload": {'Date':'date1','State':'state1', 'Properties':'properties1'}""
  }
"Request": {
    "RequestHeader": "requestHeader2",
    "RequestPayload": "{'Id':'id1','Name':'name1', 'Location':'location1'}"
  }
How can I change this so that requestData1 and requestData2 are:
"Request": {
    "RequestHeader": "requestHeader2",
    "RequestPayload": {
        "Date":"Date",
        "State":"state1",
        "Properties":"properties1"
    }
  }
"Request": {
    "RequestHeader": "requestHeader2",
    "RequestPayload": {
        "Id":"id1",
        "Name":"name1",
        "Location":"location1"
    }
  }
I probably have to change the type of RequestPayload to something other than JObject, but not sure which one.
 
     
    