其中重要的一个功能是可以将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没写,后台将会报错。
由于本人水平有限,不知道什么原因。知道的同学可以在评论区回复我,谢谢~~