私はjson.netを使用して、IISホストの安価なサービスでjsonの非直列化を処理しています。Json.netが複合型リストの逆シリアル化に失敗しました
まずは、私が処理しようとしているオブジェクトを示します。
[DataContract]
public class CreateSamplesRequest
{
[DataMember] public Guid SessionId { get; set; }
[DataMember] public SampleTemplateDTO Template { get; set; }
}
[DataContract]
public class SampleTemplateDTO
{
[DataMember] public int NumberOfSamples { get; set; }
[DataMember] public int CompanyId { get; set; }
[DataMember] public int SampleTypeId { get; set; }
[DataMember] public HmisDTO Hmis { get; set; }
[DataMember] public List<AttributeValueDTO> AttributeValues { get; set; }
}
[DataContract]
public class AttributeValueDTO
{
[DataMember] public int AttributeId { get; set; }
[DataMember] public string AttributeName { get; set; }
[DataMember] public string Value { get; set; }
}
[DataContract]
public class HmisDTO
{
[DataMember] public string Health { get; set; }
[DataMember] public string Flammability { get; set; }
[DataMember] public string Reactivity { get; set; }
[DataMember] public string Equipment { get; set; }
}
ヘルプページはCreateSamplesRequest
{
"SessionId":"1627aea5-8e0a-4371-9022-9b504344e724",
"Template":{
"NumberOfSamples":2147483647,
"CompanyId":2147483647,
"SampleTypeId":2147483647,
"Hmis":{
"Health":"String content",
"Flammability":"String content",
"Reactivity":"String content",
"Equipment":"String content"
},
"AttributeValues":[{
"AttributeId":2147483647,
"AttributeName":"String content",
"Value":"String content"
}]
}
}
のためにこの形式でJSONを要求し、これは私が実際に送信してるものです:
{
"SessionId":"17aaec11-be28-4536-b5df-d98fbda91e91",
"Template":{
"NumberOfSamples":1,
"CompanyId":1,
"SampleTypeId":9,
"Hmis":{
"Health":"2",
"Flammability":"0",
"Reactivity":"0",
"Equipment":"E",
},
"AttributeValues":[
{"AttributeId":1,"AttributeName":"Item No.","Value":"MN0002NG"},
{"AttributeId":2,"AttributeName":"Lot No.","Value":"C4526"}
]
}
}
私がいる問題がありますSampleTemplateDTOオブジェクトのAttributeValuesプロパティは常に無視されて終了します。上記のコードでは、nullになります。私がそれを空のList<AttributeValueDTO>
にインスタンス化すると、空のリストになります。私は数時間、これに対して頭を叩いていました。
私はサービスを作成しようとしましたが、それはちょうどList<AttributeValueDTO>
で、うまくいきます。私はAttributeValuesのラッパークラスを作成しようとしたが、それでもnullとして終了する。私は完全に困惑している。何か案は?