gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 21:09:56 25 4
gpt4 key购买 nike

我正在使用 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; }
}

帮助页面为 CreateSamplesRequest 请求这种格式的 json

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

这就是我实际发送的内容:

{
"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 属性最终总是被忽略。使用上面的代码,它将为空。如果我将它实例化为空 List<AttributeValueDTO>这将是一个空列表。几个小时以来,我一直在反对这个问题。

我试过创建一个只接受 List<AttributeValueDTO> 的服务它工作正常。我已经尝试为 AttributeValues 创建一个包装类,但它仍然以 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"}
]
}
}

一切正常。

关于wcf - Json.net 无法反序列化复杂类型列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10124502/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com