我有以下類:C#:插入JSON對象
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; }
}
我創建這樣的兩個類EntityEvent1和EntityEvent2類的對象:
RequestPayload1 payload1 = new RequestPayload1()
{
Date = "date1",
State = "state1",
Properties = "properties1"
};
RequestPayload2 payload2 = new RequestPayload2()
{
Id = "id1",
Name = "name1",
Location = "location1"
};
我有一個類:
internal class RequestData
{
[DataMember]
[JsonProperty(Required = Required.Always)]
internal string RequestHeader { get; set; }
[DataMember]
[JsonProperty(Required = Required.Always)]
internal JObject RequestPayload { get; set; }
}
我需要將RequestPayload設置爲RequestPayload1或RequestPayload2。這就是我爲它使用JObject類型的原因。但是當我像這樣序列化有效負載時,RequestPayload以無效的Json格式獲取對象。
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和requestData2反序列化是給時:主要是雙引號用單引號替換
"Request": {
"RequestHeader": "requestHeader1",
"RequestPayload": {'Date':'date1','State':'state1', 'Properties':'properties1'}""
}
"Request": {
"RequestHeader": "requestHeader2",
"RequestPayload": "{'Id':'id1','Name':'name1', 'Location':'location1'}"
}
我怎樣才能改變這種做法,requestData1和requestData2是:
"Request": {
"RequestHeader": "requestHeader2",
"RequestPayload": {
"Date":"Date",
"State":"state1",
"Properties":"properties1"
}
}
"Request": {
"RequestHeader": "requestHeader2",
"RequestPayload": {
"Id":"id1",
"Name":"name1",
"Location":"location1"
}
}
我可能必須將RequestPayload的類型更改爲JObject以外的其他類型,但不確定哪一個。
如果你只是使用Object,會發生什麼? –
這是最簡單的解決方案。請把它寫成答案。我會將其標記爲解決方案。 – Romonov