如何将包含另一个对象列表的对象列表传递给wcf
本文关键字:列表 wcf 对象 包含另 一个对象 | 更新日期: 2023-09-27 18:24:47
我有一个包含另一个类的对象列表的类。但当我把对象列表发送到wcf方法时,它变成了null。这是我的完整代码
这是我的课:-
public class BOTHCCharges_DETAILS
{
public String THCTerm { get; set; }
public String FromNumberOfContainer { get; set; }
public String ToNumberOfContainer { get; set; }
public String _20_GP { get; set; }
public String _20_HC { get; set; }
public String _40_GP { get; set; }
public String _40_HC { get; set; }
public String Size { get; set; }
public String Weight { get; set; }
}
[DataContract]
[KnownType(typeof(List<BOTHCCharges_DETAILS>))]
public class List_BOTHCCharges_DETAILS
{
[DataMember]
public List<BOTHCCharges_DETAILS> THC_Details { get; set; }
}
//**** ICharges.cs
[OperationContract]
[WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "AddTHCCharges")]
String AddTHCCharges(BOTHCCharges_Master OBJBOTHCCharges_Master, List<List_BOTHCCharges_DETAILS> List_BOTHCCharges_DETAILS);
//*** Charges.svc.cs
public string AddTHCCharges(BOTHCCharges_Master OBJBOTHCCharges_Master, List<List_BOTHCCharges_DETAILS> List_BOTHCCharges_DETAILS)
{
//code goes here.
}
这是我通过jquery ajax 发送的json对象
{
"OBJBOTHCCharges_Master":
{
"OriginLocationList":"[{'"CountryCode'":'"CHINA,'",'"LocationCode'":'"CNSHA,'",'"Currency'":'"AED,'"}]",
"DesinationLocationList":"[{'"CountryCode'":'"SIN,'",'"LocationCode'":'"SGSIN,'",'"Currency'":'"AED,'"}]",
"CargoWeight":"20,","CargoType":"Consol,General,","Taxable":true,"TradeType":"E"},
"List_BOTHCCharges_DETAILS":
[
["THC_Details",
{
"THCTerm":"","FromNumberOfContainer":"","ToNumberOfContainer":"","_20_GP":"","_20_HC":"","_40_GP":"","_40_HC":"","Size":"20","Weight":"Consol"
},
{
"THCTerm":"","FromNumberOfContainer":"","ToNumberOfContainer":"","_20_GP":"","_20_HC":"","_40_GP":"","_40_HC":"","Size":"20","Weight":"Consol"
}
],
["THC_Details",
{
"THCTerm":"","FromNumberOfContainer":"","ToNumberOfContainer":"","_20_GP":"","_20_HC":"","_40_GP":"","_40_HC":"","Size":"26","Weight":"Consol"
}
]
]
}
jquery调用
var wcfServiceUrl = THC.urlAddTHCCharges;
$.ajax({
cache: false,
url: wcfServiceUrl,
data: data,
type: 'POST',
contentType: 'application/json',
dataType: 'json',
beforeSend: function () {
//fnBlockUI('operation in progress..', 'false', 'true', 'null', false);
},
success: function (data) {
if (data.AddTHCChargesResult == 'SUCCESS') {
//$.showMessageBox({ content: "data has been saved successfully", title: 'My information' });
$.showMessageBox({ content: "Data has been saved successfully!", title: 'Save', OkButtonDoneFunction: function () {
location.href = 'Index'
}, type: 'question'
});
}
else {
$.showMessageBox({ content: data.AddDetentionChargesResult, title: 'Error', type: 'stop' });
}
},
error: function (error) {
$.showMessageBox({ content: error.responseText, title: 'Stop', type: 'stop' });
},
complete: function () {
//$.unblockUI();
}
});
*/
类的另一个类(类成员)的容器列表为null:-点击查看以供参考。我需要连载我的班级成员吗?。我是wcf的新手。
您的JSON与您的类不匹配。
这个
public class List_BOTHCCharges_DETAILS
{
[DataMember]
public List<BOTHCCharges_DETAILS> THC_Details { get; set; }
}
意味着这个
{ "THC_Details": [ { "THCTerm":"", … }, … ] }
不是这个
{ [ "THC_Details", { "THCTerm":"", … } ], … }
如果JSON与类定义不匹配,则会得到null
,因为绑定器无法反序列化负载。