我有WCF休息服务,期望对象作为输入。
[WebInvoke(Method = "POST",
UriTemplate = "SaveItem",
ResponseFormat = WebMessageFormat.Json,
RequestFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped)]
[OperationContract]
public string SaveItem(Item item)
{
string retValue;
using (var business = new ItemBusiness())
{
retValue = business.SaveItem(item).ToString();
}
return retValue;
}
项目类如下所示。
[DataContract]
public class Item
{
[DataMember]
public string UserId { get; set; }
[DataMember]
public string Name { get; set; }
[DataMember]
public string Description { get; set; }
[DataMember]
public string Cost { get; set; }
//[DataMember]
//public string AvailableQunatity { get; set; }
[DataMember]
public string IsNegotiable { get; set; }
[DataMember]
public string LocationLat { get; set; }
[DataMember]
public string LocationLong { get; set; }
[DataMember]
public string Condition { get; set; }
[DataMember]
public string DeliveryType { get; set; }
[DataMember]
public string PostalCode { get; set; }
[DataMember]
public string Category { get; set; }
}
我从android应用程序传递json。
{"用户ID":" 1""名称":" 1""说明":& #34; 1""成本":" 1"" IsNegotiable":" 1"" LocationLat&# 34;:" 1"" LocationLong":" 1""条件":" 1"&# 34; DeliveryType":" 1""邮编":" 1""分类":" 13&#34 ;}
但是WCF方法将Item设为null而不确定原因。
任何帮助将不胜感激。
感谢。
修改
终于搞定了......将 WebMessageBodyStyle.Wrapped 更改为 WebMessageBodyStyle.Bare
答案 0 :(得分:0)
感谢您分享您的解决方案。我需要WebMessageBodyStyle.Bare位,但我的另一个问题是我的JSON被包装在父节点"节点"根据其他网站的建议:
Not Working --> {"MethodParamName":[{"prop1":"value1","prop2":"value2"}]}
但是我的JSON总是为空。一旦我放弃了'#34;父节点"在我的JSON中我的WCF最终可以读取对象:
Working --> {"prop1":"value1","prop2":"value2"}