2012-03-27 29 views
1

我想将JSON发布到WCF服务。 json对象包含一个属性和一个数组。问题是当请求到达服务器时,TripleTransaction始终为空。我想知道如何正确绑定到我的数据合同。如果任何人都可以在这里给我一个指针,我会非常感激。WCF - 包含数组的邮政JSON对象

这是我服务的接口是什么样子:

[OperationContract] 
     [CorsBehavior] 
     [WebInvoke(Method = "POST", UriTemplate = "Triples/{library}", ResponseFormat = WebMessageFormat.Json)] 
     ResultMessage InvokeGraphTransactions(string library, TripleTransaction tripleTransaction); 

我试图来填充张贴的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; } 

    } 

上面的数据合同模仿了POST JSON。使用FireBug我可以看到请求看起来正确。该JSON是在消息的有效载荷和请求头具有的contentType:应用程序/ 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

KnownTypes?但我不确定是否需要休息服务 – Nikolay 2012-03-27 21:42:48

回答

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”

否则它不知道哪个参数应该链接数据

+0

你是个天才!谢谢你.. – Nick 2012-03-28 02:51:19

+0

你是什么意思的POST变量名? – Cyberpass 2013-04-18 19:33:39

+0

当您在页面上发布数据时,您只能发布键值数据列表。当我说“POST变量名”时,我的意思是关键。请阅读https://en.wikipedia.org/wiki/POST_%28HTTP%29 – Fabske 2013-04-19 07:53:18