如果你想要創建一個WCF操作來接收該JSON輸入,則需要定義映射到該輸入的數據契約。有幾個工具可以自動完成這項工作,其中包括我在http://jsontodatacontract.azurewebsites.net/(有關如何在this blog post編寫此工具的更多詳細信息)中編寫的工具。該工具生成的這個類,你可以使用:
// Type created for JSON at <<root>>
[System.Runtime.Serialization.DataContractAttribute()]
public partial class Person
{
[System.Runtime.Serialization.DataMemberAttribute()]
public int age;
[System.Runtime.Serialization.DataMemberAttribute()]
public string name;
[System.Runtime.Serialization.DataMemberAttribute()]
public string[] messages;
[System.Runtime.Serialization.DataMemberAttribute()]
public string favoriteColor;
[System.Runtime.Serialization.DataMemberAttribute()]
public string petName;
[System.Runtime.Serialization.DataMemberAttribute()]
public string IQ;
}
接下來,你需要定義一個操作合同接收。由於JSON需要進入請求的主體,因此使用的最自然的HTTP方法是POST
,因此您可以按如下方式定義操作:方法爲「POST」,樣式爲「Bare」(這意味着您的JSON直接映射到參數)。請注意,您甚至可以省略Method
和BodyStyle
屬性,因爲"POST"
和WebMessageBodyStyle.Bare
分別是它們的默認值)。
[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Bare)]
public Person FindPerson(Peron lookUpPerson)
{
Person found = null;
// Implementation that finds the Person and sets 'found'
return found;
}
現在,在您的輸入映射到lookupPerson
的方法中。你將如何實現你的方法的邏輯取決於你。
更新(通過jQuery)評論後,調用使用JavaScript服務的
一個例子可以在下面找到。
var input = '{
"age":100,
"name":"foo",
"messages":["msg 1","msg 2","msg 3"],
"favoriteColor" : "blue",
"petName" : "Godzilla",
"IQ" : "QuiteLow"
}';
var endpointAddress = "http://your.server.com/app/service.svc";
var url = endpointAddress + "/FindPerson";
$.ajax({
type: 'POST',
url: url,
contentType: 'application/json',
data: input,
success: function(result) {
alert(JSON.stringify(result));
}
});
見http://stackoverflow.com/questions/13165533/deserialize-json-object-sent-from-android-app-to-wcf-webservice –
哪些是您使用來調用服務的語言? JavaScript,C#,別的東西? – carlosfigueira