O'Reilly logo

Data-Driven Services with Silverlight 2 by John Papa

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Servicing JSON

Sometimes it is beneficial to create a RESTful service that can return a response message as either XML or JSON. Data formatted using JSON usually results in a smaller message size than data formatted as XML. JSON uses array structures to define the name and value pairs, whereas XML uses hierarchical elements. Although XML is much easier to read visually, JSON can be smaller and, thus, quicker to pass across a network.

Note

JSON is commonly used as a response format for services that Ajax clients consume.

Defining a JSON Response

Defining a set of operations that can perform the same operation but return the data as JSON or XML is very straightforward with WCF. You can set the ResponseFormat attribute to either WebMessageFormat.Xml or WebMessageFormat.Json to indicate the format of the response message. Example 9-8 shows two operations that return a Product as XML or as JSON, respectively.

Notice that the UriTemplate for the FindProductByNameAsXml method is slightly different from the UriTemplate for the FindProductbyNameAsJson method. The slight difference is enough to make the UriTemplate find a match if ?json is appended to the URI.

Example 9-8. Setting the response format

C#
// #4
[OperationContract]
[WebGet(UriTemplate = "Product/Name/{productName}",
    ResponseFormat = WebMessageFormat.Xml,
    BodyStyle = WebMessageBodyStyle.Bare)]
Product FindProductByNameAsXml(string productName);

// #5
[OperationContract]
[WebGet(UriTemplate = "Product/Name/{productName}?json",
 ResponseFormat ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required