2012-03-27 30 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