If you want to create a WCF operation to receive that JSON input, you'll need to define a data contract which maps to that input. There are a few tools which do that automatically, including one which I wrote a while back at http://jsontodatacontract.azurewebsites.net/ (more details on how this tool was written at this blog post). The tool generated this class, which you can use:
// 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;
}
Next, you need to define an operation contract to receive that. Since the JSON needs to go in the body of the request, the most natural HTTP method to use is POST
, so you can define the operation as below: the method being "POST" and the style being "Bare" (which means that your JSON maps directly to the parameter). Notice that you can even omit the Method
and BodyStyle
properties, since "POST"
and WebMessageBodyStyle.Bare
are their default values, respectively).
[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Bare)]
public Person FindPerson(Peron lookUpPerson)
{
Person found = null;
// Implementation that finds the Person and sets 'found'
return found;
}
Now, at the method you have the input mapped to lookupPerson
. How you will implement the logic of your method is up to you.
Update after comment
One example of calling the service using JavaScript (via jQuery) can be found below.
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));
}
});