This documentation is for WSO2 ESB version 4.0.3. View documentation for the latest release.

ESB and JSON

JavaScript Object Notation (JSON) support included in the default distribution.

JSON is another data exchangeable format like XML, but it is more lightweight and easily readable. It is based on a subset of Javascript language. Therefore, Javascript can understand JSON, and it can make Javascript objects by using JSON strings. JSON is based on key-value pairs and it uses colons to separate keys and values. JSON doesn't use end tags, and it uses braces (curly brackets) to enclose JSON Objects.

For example,

<root><test>json object</test></root> == {“root”:{“test”:”json object”}}

When it comes to converting XML to JSON and vice versa, there are two major conventions, one named "Badgerfish" and the other, “Mapped.” The main difference between these two conventions exists in the way they map XML namespaces into JSON.

<xsl:root xmlns:xsl="http://foo.com"><data>my json string</data></xsl:root>

This XML string can be converted into JSON as follows.

  • Using “Badgerfish”
{"xsl:root":{"@xmlns":{"xsl":"http://foo.com"},"data":{"$":"my json string"}}}
  • Using “Mapped”

If we use the namespace mapping as http://foo.com -> foo

{"foo.root":{"data":"my json string"}}

JSON support implementation is a new feature in Apache Axis2/Java. It will become a crucial improvement in the future with applications like Javascript Web services.

Learn more information about JSON here.

Configuring WSO2 ESB for Supporting JSON

Open up is a lightweight data-interchange format. It can be used as an alternative to XML or SOAP. To enable the JSON support in Synapse, the following two JAR files should be deployed into the lib directory of Synapse.

Having deployed the necessary libraries, you should now register the JSON message builder and formatter with Synapse. Open up repository/conf/axis2.xml file of Synapse and add the following two entries under the messageBuilders and messageFormatters sections respectively.

<messageBuilder contentType="application/json"
                         class="org.apache.axis2.json.JSONOMBuilder"/>

<messageFormatter contentType="application/json"
                         class="org.apache.axis2.json.JSONMessageFormatter"/>

Add the above two entries to the samples/axis2Client/client_repo/conf/axis2.xml file.