- A collection of name/value pairs: An associative array in Javascript which is analogous to the Java Map.
- An ordered list of values: Analogous to a Java Array.
Producing JSON from Java
Since JSON objects can be declared literally in JavaScript, it is possible to create these literals from Java classes. There are a couple of ways to achieve this
- Using JSONObject: The source code for JSONObject and the supporting classes is available at http://www.json.org/java/index.html. Using this you can create JSONObject from a Java class as shown below
JSONObject json = new JSONObject(); json.put("name1",value1); json.put("name2",value2);
The JSONObject class will appear as a Javascript Associate array which looks like this{"name1": "value1", "name2": "value2"}
- Using JSON-lib: This is a Java library (available on sourceforge) that provides utility methods to convert different Java objects into JSONObject. This method is used in the example shown below.
- The Java class:
package beans; import java.util.Map; import java.util.TreeMap; import net.sf.json.JSONObject; public class MapHolder { private Map
map; public Map getMap() { return map; } public void setMap(Map map) { this.map = map; } public JSONObject getJsonObject() { JSONObject obj = JSONObject.fromMap(map); return obj; } public MapHolder() { map = new TreeMap (); map.put("name1", "value1"); map.put("name2", "value2"); } } MapHolder.java - The getJsonObject() method uses JSON-lib to convert the Map to a JSONObject.
- The JSP:
<%@page import="beans.MapHolder,net.sf.json.JSONObject"%> <html> <head> <title>Title</title> <script> function getInfo(o) { var obj=o; document.getElementById('test').innerHTML=obj.name1; } </script> </head> <body> <% JSONObject obj = (new MapHolder()).getJsonObject(); %> <input type="button" value="submit" onclick='getInfo(<%=obj%>)' /> <div id="test"></div> </body> </html>
index.jsp - Note the "obj.name1" in the script to access the element from the associative array.
- The JAR files: In order to use JSON-lib, you will need to include the following jars in your classpath
- commons-lang.jar
- commons-logging.jar
- commons-beanutils.jar
- ezmorph-1.0.1.jar (available from sourceforge ezmorph)
- json-lib-1.1-jdk15.jar (from sourceforge json-lib).
{ 0 comments... Views All / Send Comment! }
Post a Comment