我有以下类: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