Servlet系列问题 —— 获取JSON格式数据的三种方式

第一种:手动拼接

第一步:确认JSON格式

[
	{"name":"张三","sex":"男","age":17},
	{"name":"李四","sex":"男","age":18},
	{"name":"王五","sex":"男","age":19}
]

       需要注意的是,最后一个对象是没有逗号的

第二步:创建JavaBean对象,定义JSON输出方法

public class User {
	private int id;			//用户ID
	private String name;	//姓名
	private int sex;		//性别
	private int age;		//年龄
	private long phone;		//手机号码
	private int qq;			//QQ
	private String email;	//邮箱
	
	public String JSONStr(){
		return "{\"id\":\""+id+"\",\"name\":\""+name+"\",\"sex\":\""+sex+"\",\"age\":\""+age+"\",\"phone\":\""+phone+"\",\"qq\":\""+qq+"\",\"email\":\""+email+"\"},";
	}
	//省略 Get 和 Set 方法
}

       需要注意的是,注意使用符号 " \ " 对双冒号( " )进行转义

第三步:Dao继承类在返回JSON格式的字符串

//省略连接数获取数据的步骤
String JSONStr="";  //一定要初始化JSONStr为空字符串,否则会将undefined插入进去
while(rs.next()){
    User user = new User();
    user.setId(rs.getInt("id"));
    user.setName(rs.getString("name"));
    user.setSex(rs.getInt("sex"));
    user.setAge(rs.getInt("age"));
    user.setPhone(rs.getLong("phone"));
    user.setQq(rs.getInt("qq"));
    user.setEmail(rs.getString("email"));
    JSONStr += user.JSONStr();
}
//【重点步骤】获取拼接字符最后一个逗号所在的索引,然后截取该逗号之前的所有字符串
int index = JSONStr.lastIndexOf(",");
return JSONStr.substring(0, index);

第四步:Servlet业务类

//1、获取Dao接口对象
UserDaoImpl udi = new UserDaoImpl();
//2、调用上面第三步的方法,返回JSON字符串,进行最后的拼接
String JSONStr = "[" + udi.showStr(pageNow) + "]";
response.getWriter().append(JSONStr);

第五步:Ajax获取JSON字符串,并通过JSON.parse()方法进行格式化

var jsonStr = xhr.responseText;    //接受返回的Json字符数据
var jsonDate = JSON.parse(jsonStr);//对Json数据进行解析
var jsonHtml="";    //拼接HTML字符串
for (var i in jsonDate){
    jsonHtml+="<tr><td>"+jsonDate[i].id+"</td><td>"+jsonDate[i].name+"</td><td>"+jsonDate[i].sex+"</td><td>"+jsonDate[i].age+"</td><td>"+jsonDate[i].phone+"</td><td>"+jsonDate[i].qq+"</td><td>"+jsonDate[i].email+"</td></tr>"
}
document.getElementsByClassName("tdCont")[0].innerHTML = jsonHtml;

最终效果

第二种:使用Gson软件包

       步骤和前面的一样,只不过需要将Gson软件包(jar包)引入到/WEB-INF/lib文件夹中

List<User> list = new ArrayList<User>();
while(rs.next()){
    User user = new User();
    user.setId(rs.getInt("id"));
    user.setName(rs.getString("name"));
    user.setSex(rs.getInt("sex"));
    user.setAge(rs.getInt("age"));
    user.setPhone(rs.getLong("phone"));
    user.setQq(rs.getInt("qq"));
    user.setEmail(rs.getString("email"));
    list.add(user);
}
return list;

     Servlet业务类只需要获取Dao继承类所返回的User集合对象,然后调用

//1、获取Dao接口对象
UserDaoImpl udi = new UserDaoImpl();
//2、将返回的User集合直接传进toJson的格式化方法中
String JSONStr= gson.toJson(udi.showStr(pageNow));    
response.getWriter().append(result);
//3、响应结果
response.getWriter().println(JSONStr);
String result = gson.toJson(list);    
response.getWriter().append(result);

第三种:使用json-lib-2.4-jdk软件包

       和第一步也差不多,只是Dao继承类返回的不再是字符串而是User集合对象

List<User> list = new ArrayList<User>();
while(rs.next()){
    User user = new User();
    user.setId(rs.getInt("id"));
    user.setName(rs.getString("name"));
    user.setSex(rs.getInt("sex"));
    user.setAge(rs.getInt("age"));
    user.setPhone(rs.getLong("phone"));
    user.setQq(rs.getInt("qq"));
    user.setEmail(rs.getString("email"));
    list.add(user);
}
return list;

       Servlet业务类只需要获取Dao继承类所返回的User集合对象,然后调用

//1、获取Dao接口对象
UserDaoImpl udi = new UserDaoImpl();
//2、将返回的User集合直接传进JSONArray的格式化方法中
JSONArray jsonArray = JSONArray.fromObject(udi.showStr(pageNow));
//3、响应结果
response.getWriter().println(jsonArray);

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值