我正在尝试将JSON POST到WCF服务。 json对象包含属性和数组。问题是当请求到达服务器时,TripleTransaction始终为null。我想知道如何正确绑定到我的数据合同。如果有人能在这里给我一个指针我真的很感激。
这就是我的服务界面:
[OperationContract]
[CorsBehavior]
[WebInvoke(Method = "POST", UriTemplate = "Triples/{library}", ResponseFormat = WebMessageFormat.Json)]
ResultMessage InvokeGraphTransactions(string library, TripleTransaction tripleTransaction);
我正在尝试使用POSTed JSON填充TripleTransaction。 TripleTransaction包含TripleModel列表。
[DataContract]
public class TripleTransaction
{
[DataMember]
public string Localization { get; set; }
[DataMember]
public List<TripleModel> Transactions { get; set; }
}
[DataContract]
public class TripleModel
{
[DataMember]
public int TransactionType { get; set; }
[DataMember]
public string SubjectLocalPart { get; set; }
[DataMember]
public string PredicateLocalPart { get; set; }
[DataMember]
public string ObjectPart { get; set; }
[DataMember]
public string Update { get; set; }
}
上述datacontract的建模类似于POSTed JSON。使用FireBug我可以看到请求看起来正确。 JSON位于消息有效内容中,请求标头具有contentType:application / json
这是我试图发送的json的一个例子:
{
"tripleTransaction": {
"Localization": "en-us",
"Transactions": [
{
"TransactionType": 0,
"SubjectLocalPart": "testSubject",
"PredicateLocalPart": "testPredicate",
"ObjectPart": "1",
"Update": "2"
},
{
"TransactionType": 1,
"SubjectLocalPart": "testSubject",
"PredicateLocalPart": "testPredicate",
"ObjectPart": "1"
}
]
}
}
答案 0 :(得分:2)
你应该发布这个:
{
"Localization": "en-us",
"Transactions": [
{
"TransactionType": 0,
"SubjectLocalPart": "testSubject",
"PredicateLocalPart": "testPredicate",
"ObjectPart": "1",
"Update": "2"
},
{
"TransactionType": 1,
"SubjectLocalPart": "testSubject",
"PredicateLocalPart": "testPredicate",
"ObjectPart": "1"
}
]
}
在POST变量名称“tripleTransaction”
下否则它不知道它应该将您的数据链接到哪个参数