json
json解析器:
现在用的比较多的是jsonlib,gson,fastjson(阿里巴巴),jackson是springMVC内置的解析器,
今天使用的是jackson的包
1、java对象转换成json
1、导入json的jar包
这是用maven管理的包
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.8</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.8</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.8</version>
</dependency>
2、创建一个java对象
3、创建一个核心的对象objectMapper
objectMapper mapper = new ObjectMapper();
4、调用object的相关方法
void writeValue(参数1,obj);
参数1:
file:将obj文件对象转换成JSON字符串,并保存到指定文件中
outputStream:将obj对象转换成JSON对象,并填充到字节输出流中
writer:将obj对象转换成json字符串,并将json数据转换成字符输出流
[String] writeValueAsString(obj)
将obj对象转换成json字符串
5、代码及结果展示
package com.hqh;
import com.fasterxml.jackson.databind.ObjectMapper;
import domain.Person;
import org.junit.Test;
import java.io.File;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class TestUn {
@Test
public void fun() throws Exception {
//1、创建一个person对象
Person p = new Person();
p.setPassword("loveCom");
p.setUsername("二狗子");
p.setSex("女");
//2、创建一个json核心对象
ObjectMapper mapper = new ObjectMapper();
//3、进行转换(java对象转换成json数据)
/*
转换的常用方法
1、writeValue(参数1,obj)
参数1:
file:将obj文件对象转换成JSON字符串,并保存到指定文件中
outputStream:将obj对象转换成JSON对象,并填充到字节输出流中
writer:将obj对象转换成json字符串,并将json数据转换成字符输出流
;
2、writeValueAsString(obj) 将obj对象转换成json字符串
*/
// String s = mapper.writeValueAsString(p);
// System.out.println(s);
mapper.writeValue(new File("E://Desktop/hhh/hhh.txt"),p);
mapper.writeValue(new FileWriter("E://Desktop/hhh/h2.txt"),p);
}
}
6、list和map复杂对象转换成json字符串
单点测试代码如下:
peson对象如下:
在这里插入代码片
package domain;
public class Person {
private String username;
private String password;
private String sex;
@Override
public String toString() {
return "Person{" +
"username='" + username + '\'' +
", password='" + password + '\'' +
", sex='" + sex + '\'' +
'}';
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
@Test
public void f(){
//创建一个map对象
Map<String,String> map = new HashMap<String, String>();
map.put("name","hqh");
map.put("password","root");
map.put("sex","男");
//创建一个;list对象
List<Person> list = new ArrayList<Person>();
Person person = new Person();
person.setSex("男");
person.setUsername("狗子");
person.setPassword("root");
Person p1 = new Person();
p1.setSex("男");
p1.setUsername("狗子");
p1.setPassword("root");
list.add(p1);
list.add(person);
//创建一个核心对象
ObjectMapper mapper = new ObjectMapper();
//调用其中的方法
String ma = mapper.writeValueAsString(map);
String li = mapper.writeValueAsString(list);
System.out.println(ma);
System.out.println(li);
}
结果如下
2、json转换成java对象
@Test
public void mun() throws Exception{
String json ="{\"username\":\"狗子\",\"password\":\"root\",\"sex\":\"男\"}"; //定义一个json格式的字符串.
ObjectMapper jsonObject = new ObjectMapper();
Person c =jsonObject.readValue(json,Person.class);
System.out.println(c);
}
下面开始进行小demo的前端界面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="js/jquery-3.3.1.js"></script>
</head>
<body>
<form action="#" method="post">
<input type="text" id = "user_name" name="username" placeholder="请输入用户名"><br>
<input type="password" name="password" placeholder="请输入密码">
<input type="submit" value="提交">
</form>
<script>
window.onload = function () {
$("#user_name").blur (function () {
$.ajax({
url:'testUserName',
type:'post',
dataType:'json',
data:
{
username:$("#user_name").val()
},
success:function (data) {
alert("hello world");
alert(data);
}
},"json")
})
}
</script>
</body>
</html>
界面如下显示:
后台代码如下:
@WebServlet("/testUserName")
public class TestUser extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("你好呀,我热烈欢迎你从ajax进入java");
String s = request.getParameter("username");
//创建一个jackson的对象
ObjectMapper objectMapper = new ObjectMapper();
if(s.equals("huang")) {
objectMapper.writeValue(response.getWriter(), "恭喜你对了"+s);
}else {
objectMapper.writeValue(response.getWriter(), "不好意识"+s);
}
}
}
最后的效果图:
总结
经过这个这个样例之后,我大概了解了前后端是如何交互的,也离前后端分离又迈进了一大步,起码接下来可以好好的做ssm的项目了。