其中重要的一个功能是可以将JSON格式的数据转化为类对象。比如下面这个例子:
首先要引入一个jar包,如果是MAVEN项目,直接在pom.xml中导入就可以了
<!--
json
解析 -->
<
dependency
>
<
groupId
>
com.fasterxml.jackson.core
</
groupId
>
<
artifactId
>
jackson
-
databind
</
artifactId
>
<
version
>
2.8.7
</
version
>
</
dependency
>
我们如果要创建一个People类,其类的结构是:
public class People {
String name;
int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
前端页面是
<button id="submit">创建对象</button>
<script src="jq.js"></script>
<script>
$(function() {
var url = "/springmvc/hello.do";
$("#submit").click(function() {
var name = "jack";
var age = 18;
var people = {};
people.name = name;
people.age = age;
var formData = new FormData();
formData.append("people", JSON.stringify(people)); //将其转化为JSON格式并插入fromdata中
console.log(JSON.stringify(people)); //{"name":"jack","age":18}
$.ajax({
url : url,
type : "post",
data : formData,
contentType : false,
processData : false, // 是否将参数序列化,如{ width:1680, height:1050}
// 参数对象序列化为width=1680&height=1050这样的字符串
success : function(data) {
}
})
})
})
</script>
后端接受页面:
@RequestMapping(value = "/hello.do")
public void say(HttpServletRequest request) {
ObjectMapper mapper=new ObjectMapper();
People people=new People();
String msg=request.getParameter("people"); //从前端接收JSON数据
try {
people=mapper.readValue(msg, People.class); //将JSON数据转为类对象
} catch (JsonParseException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(people.getName()); //打印的结果为jack
}
注意:若标红的声明processData : false
没有写,jq将报错,无法将数据传送到后台。 contentType : false没写,后台将会报错。
由于本人水平有限,不知道什么原因。知道的同学可以在评论区回复我,谢谢~~