关于List转JSONArray
下面是我servlet的代码
第一种
public class Data extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
String music=request.getParameter("music");
List<String> list=new ArrayList<String>();
switch(music){
case "流行歌曲":
list.add("{name:稻香}");
list.add("{name:晴天}");
list.add("{name:告白气球}");
break;
case "经典歌曲":
list.add("{name:千千阙歌}");
list.add("{name:傻女}");
list.add("{name:七友}");
break;
case "摇滚歌曲":
list.add("{name:一块红布}");
list.add("{name:假行僧}");
list.add("{name:新长征路上的摇滚}");
break;
default:
break;
}
JSONObject jsonObject=new JSONObject(list);
response.getOutputStream().write(jsonObject.toString().getBytes("utf-8"));
}
第二种
public class Data extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
String music=request.getParameter("music");
List<Music> list=new ArrayList<Music>();
switch(music){
case "流行歌曲":
list.add(new Music("稻香"));
list.add(new Music("晴天"));
list.add(new Music("告白气球"));
break;
case "经典歌曲":
list.add(new Music("千千阙歌"));
list.add(new Music("傻女"));
list.add(new Music("七友"));
break;
case "摇滚歌曲":
list.add(new Music("一块红布"));
list.add(new Music("假行僧"));
list.add(new Music("新长征路上的摇滚"));
break;
default:
break;
}
JSONArray jsonArray=new JSONArray(list);
response.getOutputStream().write(jsonArray.toString().getBytes("utf-8"));
}
一开始我用的第一种,在jsp里面取不到值,然后用的第二种,可以取到。
第一种为什么list里面直接添加String类型的参数取不到值呢
正在回答
JSONObject需要的形式是:以花括号"{}"括起来,其元素要求为键值对,key必须为String类型的,而value则可为任意类型。key和value之间以":"表示映射关系,元素之间也是以逗号分隔。
同学写成list集合的形式,它识别不了的。
而同学的再定义一个类存到集合中是用的JSONArray,所以可以取到,这两个不能混用哦
如果我的回答解决了你的问题,请采纳,祝学习愉快.
前端代码
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
<style>
*{
margin:0;
padding:0;
}
#head{
text-align:center;
}
button{
width:33%;
height:33%;
}
.show{
text-align:center;
}
</style>
<script type="text/javascript" src="resource/js/jquery-3.3.1.js"></script>
</head>
<body id="main">
<div id="head">
<button value="流行歌曲">流行歌曲</button>
<button value="经典歌曲">经典歌曲</button>
<button value="摇滚歌曲">摇滚歌曲</button>
</div>
<script type="text/javascript">
$("button").click(function(){
$.ajax({
url:"/test/data",
type:"post",
data:{music:$(this).val()},
dataType:"json",
success:function(result){
$(".show").remove();
for(var i in result){
$("#main").append("<h1 class='show'>"+result[i].name+"</h1>");
}
}
})
});
</script>
</body>
</html>
你好同学,你的前端页面是如何写的呢?建议你将前端页面的代码也粘贴一下,注意不要粘贴到回复中,而是要粘贴到回答中,否则会失去代码格式,祝学习愉快~
- 参与学习 人
- 提交作业 1088 份
- 解答问题 10205 个
如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星