Ich versuche, JSON an einen WCF-Dienst zu senden. Das Json-Objekt enthält eine Eigenschaft und ein Array. Das Problem ist, dass TripleTransaction immer null ist, wenn die Anforderung beim Server eingeht. Ich frage mich, wie ich meinen Datenvertrag richtig binden kann. Wenn mir hier jemand einen Zeiger geben kann, würde ich das sehr schätzen.WCF - Post-JSON-Objekt, das ein Array enthält
Dies ist, was meine Service-Schnittstelle wie folgt aussieht:
[OperationContract]
[CorsBehavior]
[WebInvoke(Method = "POST", UriTemplate = "Triples/{library}", ResponseFormat = WebMessageFormat.Json)]
ResultMessage InvokeGraphTransactions(string library, TripleTransaction tripleTransaction);
ich die TripleTransaction mit dem von ihm entsandten JSON zu füllen versucht bin. TripleTransaction enthält eine Liste von 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; }
}
Der obige Datenvertrag ist wie der POSTed JSON modelliert. Mit FireBug kann ich sehen, dass die Anfrage korrekt aussieht. Die JSON ist in der Payload der Message und der Request-Header hat eine content: application/json
Dies ist ein Beispiel für die json, die ich zu senden versucht bin:
{
"tripleTransaction": {
"Localization": "en-us",
"Transactions": [
{
"TransactionType": 0,
"SubjectLocalPart": "testSubject",
"PredicateLocalPart": "testPredicate",
"ObjectPart": "1",
"Update": "2"
},
{
"TransactionType": 1,
"SubjectLocalPart": "testSubject",
"PredicateLocalPart": "testPredicate",
"ObjectPart": "1"
}
]
}
}
BekannteTypen? Aber ich bin nicht sicher, ob es auf Restdienst benötigt wird – Nikolay