- 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();
The JSONObject class will appear as a Javascript Associate array which looks like this
json.put("name1",value1);
json.put("name2",value2);{"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 Mapmap;
public Map getMap() {
return map;
}
public void setMap(Mapmap) {
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).
JSONObject.fromMap is not avaliable .
ReplyDeleteTry
ReplyDeleteJSONObject obj = JSONObject.fromObject(map);