With the addition of a new Web service HTTP control parameter,
you can specify which output format to generate for output messages
with REST-like HTTP bindings.
You can use the optional outputFormat control
parameter to specify the format of the output messages from running
an operation in a Web service. If you specify a value for the outputFormat parameter
when you deploy a Web service, the specified output format is used
every time an operation in the Web service is run. If you do not specify
a value for the parameter at deployment, when an operation in the
Web service is run, an output format can be specified. If an output
format is not specified at run time, the default output format is
used.
The HTTP binding determines the default output format,
as shown in Table 1.
Table 1. Default output format for HTTP
bindingsBinding |
Default output format |
MIME type |
HTTP GET |
XML |
text/xml |
HTTP POST (url-encoded) |
XML |
text/xml |
HTTP POST (xml) |
XML |
text/xml |
HTTP POST (json) |
JSON |
application/json |
- Output format exceptions
- SOAP
- With a SOAP binding, there is no way to influence the output format.
The output format is always XML.
- XSL output
- If an operation has an XSL assigned to transform the output message,
the outputFormat control parameter is ignored.
In this case, both the format and the MIME type are determined by
the XSL.
Default JSON output format
The default JSON
output format follows the JSON specification at www.json.org.
- Column names
- Column names become JSON object names.
- Data types
- The same data type conversions are used for the JSON output format
as are used for the XML output format.
- Date/time values use the XSD date/time format and are represented
as JSON strings. There are no date/time formats in JSON.
- Binary values are base64–encoded JSON strings.
- All numbers are mapped to JSON numbers.
- SQL NULL is mapped to JSON null.
- XML is embedded as JSON string.
- SQL Boolean is mapped to JSON boolean.
- Output formats by operation type
- The following information describes the different formats that
are based on the operation types.
- SQL SELECT (result set)
- A result set is returned as a JSON array. The following example
shows a result set with information returned for multiple employees.
{"getEmployeesResponse":
[
{
"EMPNO":"000010",
"FIRSTNME":"CHRISTINE",
"MIDINIT":"I",
"LASTNAME":"HAAS",
"WORKDEPT":"A00",
"PHONENO":"3978",
"HIREDATE":"1995-01-01Z",
"JOB":"PRES ",
"EDLEVEL":18,
"SEX":"F",
"BIRTHDATE":"1963-08-24Z",
"SALARY":96800.00,
"BONUS":21113.19,
"COMM":4220.00},
{
"EMPNO":"000020",
"FIRSTNME":"MICHAEL",
"MIDINIT":"L",
"LASTNAME":"THOMPSON", ...}
]
}
If the
Fetch only single row for queries check
box was selected when an operation was defined, a JSON object for
the first row of the query is returned instead of a JSON array. The
following code shows an example of the first row of a query returned
as a JSON object.
{"getEmployeesResponse":
{
"EMPNO":"000010",
"FIRSTNME":"CHRISTINE",
"MIDINIT":"I",
"LASTNAME":"HAAS",
"WORKDEPT":"A00",
"PHONENO":"3978",
"HIREDATE":"1995-01-01Z",
"JOB":"PRES ",
"EDLEVEL":18,
"SEX":"F",
"BIRTHDATE":"1963-08-24Z",
"SALARY":96800.00,
"BONUS":21113.19,
"COMM":4220.00}
}
- SQL UPDATE (INSERT, DELETE, or MERGE) (update count)
- The following code is an example of the JSON message format for
an SQL UPDATE operation with update count.
{"updateEmployeeResponse":{"updateCount":1}}
- Stored procedure call
- The following code shows a JSON array for each rowset that is
returned from the stored procedure call.
{"BONUS_INCREASEResponse":
{
"P_DEPTSWITHOUTNEWBONUSES":"",
"P_COUNTDEPTSVIEWED":8,
"P_COUNTDEPTSBONUSCHANGED":8,
"P_ERRORMSG":"",
"rowset":
[
{
"WORKDEPT":"A00",
"EMPNO":"000010",
"BONUS":25546.95},
{
"WORKDEPT":"A00",
"EMPNO":"000110",
"BONUS":22992.12},
{
"WORKDEPT":"A00",
"EMPNO":"000120",
...}
],
"rowset2":
[
{
"WORKDEPT":"A00",
"EMPNO":"000010",
"BONUS":25546.95},
{
"WORKDEPT":"A00",
"EMPNO":"000110",
"BONUS":22992.12},
{
"WORKDEPT":"A00",
"EMPNO":"000120",
...}
],
...
}
}
- XQuery
- The results from an XQuery are returned as a JSON array. The following
example shows the XQuery results in a JSON array:
{"testXQueryResponse":
[
"Basic Snow Shovel, ",
"A Deluxe Snow Shovel ...",
...
]
}
If the
Fetch only single row for queries check
box was selected when an operation was defined, a JSON object for
the first row of the XQuery results is returned instead of a JSON
array. The following code shows an example of the first string value
of the XQuery results returned as a JSON object.
{"testXQueryResponse":
"Basic Snow Shovel, "
}