众所周知,json是一个轻量级数据传递工具,页面上使用后台传递的json数据对象然后解析展示在页面上。了解json可以参考http://www.w3school.com.cn/json/json_syntax.asp。这是json的语法很简单。
数组:[]
对象:{}
取数组元素:[i]
去对象元素:.
下面贴代码,根据代码了解json
这个类是json的测试类
package com.sinosoft.util;
import ins.framework.web.Struts2Action;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
public class JsonTest extends Struts2Action {
public static void main(String args[]){
Dog g = new Dog(); //
ShiZi sz = new ShiZi(); //
sz.setAge(1); //
sz.setTizhong(0.23);
g.setName("abc") ;
g.setShizi(sz);
JSONObject jo = new JSONObject();
Map<String, String> m = new HashMap<String, String>();
m.put("1", "a");
m.put("2", "b");
m.put("3", "c");
Map<String, String> m1 = new HashMap<String, String>();
m1.put("1", "a");
m1.put("2", "b");
m1.put("3", "c");
List<Map> list = new ArrayList<Map>();
list.add(m);
list.add(m1);
JSONArray ja1 = JSONArray.fromObject(m);
JSONArray ja2 = JSONArray.fromObject(list);
JSONArray ja3 = JSONArray.fromObject(g);
System.out.println(ja1.toString());
System.out.println(ja2.toString());
System.out.println(ja3.toString());
jo.put("date1", ja1);
jo.put("date2", ja2);
jo.put("date3", ja3);
System.out.println(jo.toString());
try {
Connection conn = getConn();
Statement sm = conn.createStatement();
ResultSet rs = sm.executeQuery("select u.uname,msg.content,msg.createTime from user u,usermsginfo um ,message msg where u.id = um.user_id and um.message_id = msg.id");
Map<String,String> maps = null;
List<Map> lists = new ArrayList<Map>();
while(rs.next()){
maps = new HashMap<String, String>();
maps.put("uname",rs.getString(1) );
maps.put("content", rs.getString(2));
maps.put("crateTime", rs.getDate(3).toString());
lists.add(maps);
}
JSONArray ja4 = JSONArray.fromObject(lists);
JSONObject jo1 = new JSONObject();
jo1.put("date", ja4);
System.out.println(jo1.toString());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static Connection getConn() throws Exception{
Class.forName("com.mysql.jdbc.Driver");
return DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root");
}
}
这个是测试类用的Dog类,Dog类里面又有一个类ShiZi
package com.sinosoft.util;
public class Dog {
private String name;
private ShiZi shizi;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public ShiZi getShizi() {
return shizi;
}
public void setShizi(ShiZi shizi) {
this.shizi = shizi;
}
public void shark(){
System.out.println("叫");
}
}
ShiZi类
package com.sinosoft.util;
public class ShiZi {
private int age;
private double tizhong;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public double getTizhong() {
return tizhong;
}
public void setTizhong(double tizhong) {
this.tizhong = tizhong;
}
}
打印结果:[{"3":"c","2":"b","1":"a"}]
[{"3":"c","2":"b","1":"a"},{"3":"c","2":"b","1":"a"}]
[{"name":"abc","shizi":{"tizhong":0.23,"age":1}}]
{"date3":[{"name":"abc","shizi":{"tizhong":0.23,"age":1}}],"date2":[{"3":"c","2":"b","1":"a"},{"3":"c","2":"b","1":"a"}],"date1":[{"3":"c","2":"b","1":"a"}]}
{"date":[{"content":"aa","uname":"abc","crateTime":"2012-03-15"},{"content":"GADRGADSGASDG","uname":"abc","crateTime":"2012-04-09"},{"content":"argeargearg","uname":"abc","crateTime":"2012-04-09"}]}
请参考打印结果来对比程序,这样你会很好明白java怎么构建成json的。然后通过servlet的out对象将json写道页面,这样你就可以在页面使用json对象了。
我简单介绍一下吧,如果是标准pojo对象那么通过JSONArray.fromObject(对象A)那么它将会将对象A包装成{A对象属性1:属性值1...A对象属性n:属性值n}。纯list对象里面放着[a,b,c,d]那么通过JSONArray.fromObject转换之后变为{1:a,2:b,3:c,4:d}。如果list里面放的是map那么就会打印出[{"3":"c","2":"b","1":"a"},{"3":"c","2":"b","1":"a"}]。尽量使用list里面放map这种格式,因为后期你在页面取值的时候方便一些!!!