Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wcf Json.net无法反序列化复杂类型列表_Wcf_Json.net_Wcf Rest - Fatal编程技术网

Wcf Json.net无法反序列化复杂类型列表

Wcf Json.net无法反序列化复杂类型列表,wcf,json.net,wcf-rest,Wcf,Json.net,Wcf Rest,我使用json.net在IIS托管的restful服务中执行json反序列化处理 首先,这里是我尝试使用的对象 [DataContract] public class CreateSamplesRequest { [DataMember] public Guid SessionId { get; set; } [DataMember] public SampleTemplateDTO Template { get; set; } } [DataContract] public c

我使用json.net在IIS托管的restful服务中执行json反序列化处理

首先,这里是我尝试使用的对象

[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; }
}
这就是我实际发送的内容:

{
 "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属性总是被忽略。使用上述代码,它将为空。如果我将它实例化为一个空的
列表
,它将是一个空列表。几个小时来,我一直在用头撞这个


我尝试过创建一个只需要
列表
的服务,效果很好。我尝试过为AttributeValue创建一个包装器类,结果仍然是null。我完全被难住了。有什么想法吗?

上帝之母,我在一个奇怪的逗号上浪费了5个小时。HMIS部分中的尾随逗号显然是在告诉json.net此时停止解析

当我提交此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"}
  ]     
 }
}
一切都很好

{
 "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"}
  ]     
 }
}