500错误:转换成JSON格式数据时出错
@Controller
public class AjaxController {
@RequestMapping("ajax")
@ResponseBody
public List<Person> list(){
List<Person> list = new ArrayList<>();
Person person = new Person("hao", 18);
list.add(person);
return list;
}
}
解决:
在pom文件加入以下依赖或下载对应jar包
<!-- json转换工具 -->
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
controller代码修改:
@Controller
public class AjaxController {
@RequestMapping("ajax")
@ResponseBody
public String list(){
List<Person> list = new ArrayList<>();
Person person = new Person("hao", 18);
Person person1 = new Person("lin", 15);
list.add(person);
list.add(person1);
//返回值是字符串类型,在前端需要解析JSON字符串
return JSONObject.toJSONString(list, SerializerFeature.WriteMapNullValue);
}
}
前端代码:
<body>
<input type="button" id="btn" value="获取数据">
<table width="80%" align="center">
<tr>
<td>姓名</td>
<td>年龄</td>
</tr>
<tbody id="content"/>
</table>
<script src="/js/jquery/jquery-2.1.4.min.js"></script>
<script>
$(function () {
$("#btn").click(function () {
$.post("/ajax.do",function (data) {
console.log(data);
var work = $.parseJSON(data);//解析一个 JSON 字符串
console.log(work)
var html ="";
for (var i = 0;i<work.length;++i){
html += "<tr>"+
"<td>"+work[i].name + "</td>" +
"<td>"+work[i].age + "</td>" +
"</tr>"
}
$("#content").html(html);
})
})
})
</script>