JSON数据与Java对象的相互转换
JSON数据与Java对象的相互转换
JSON解析器
常见的解析器:Jsonlib 、Gson、 fastjson、 jackson
JSON转化为Java对象
使用步骤:
1、导入jackson的相关jar包
2、创建jackson核心对象ObjectMapper
3、使用ObjectMapper的相关方法进行转换
1、readValue(json字符串数组,Class)
Java转化为JSON对象
使用步骤
1、导入jackson的相关jar包
2、创建jackson核心对象ObjectMapper
3、使用ObjectMapper的相关方法进行转换
转换方式:
* writeValue(参数1,obj):
参数1:
File:将obj对象转换为JSON字符串,并保存到指定的文件中
Writer:将obj对象转换为JSON字符串,并将json数据填充到字符输出流中
OutputStream:将obj对象转换为JSON字符串,并将json数据填充到字节输出流中
* writeValueAsString(obj):将对象转为json字符串
注解
- @JsonIgnore:排除属性。
@JsonFormat:属性值得格式化
- @JsonFormat(pattern = "yyyy-MM-dd")
- 复杂Java对象转换
- List:数组
- Map:对象格式一致
创建person类
public class Person {
private String name;
private Integer age;
private String gender;
//@JsonIgnore //忽略该属性
@JsonFormat(pattern = "yyyy-MM-dd")//属性格式化
private Date birthday;
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public Person() {
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
", gender='" + gender + '\'' +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
}
Java转化为JSON对象
JacksonTest
public class JacksonTest { //Java对象转为JSON
@Test
public void test1() throws IOException {
//创建Person对象
Person person = new Person();
person.setName("张三");
person.setAge(21);
person.setGender("男");
ObjectMapper om = new ObjectMapper();
/*
writeValue(参数,obj)
参数1.:
File:将对象转换为json字符串,并保存指定的文件中
Writer:将对象转换为json字符串,并将json数据填充到字符输出流中
Outputstream:将对象转换为json字符串,并将json数据填充到字节输出流中
*/
/*//writeValue写到D://a.txt中
om.writeValue(new File("D://a.txt"),person);*/
//writeValue,数据关联到Writer中
// om.writeValue(new FileWriter("d://b.txt"),person); //将对象转化成json对象
String s = om.writeValueAsString(person);
System.out.println(s);
} @Test
public void test2() throws IOException {
//创建Person对象
Person person = new Person();
person.setName("张三");
person.setAge(21);
person.setGender("男");
person.setBirthday(new Date());
ObjectMapper om = new ObjectMapper();
String s = om.writeValueAsString(person);
System.out.println(s); } @Test
public void test3() throws IOException {
//创建Person对象
Person person = new Person();
person.setName("张三");
person.setAge(21);
person.setGender("男");
person.setBirthday(new Date());
//创建Person对象
Person person1 = new Person();
person1.setName("张三");
person1.setAge(21);
person1.setGender("男");
person1.setBirthday(new Date());
//创建Person对象
Person person2 = new Person();
person2.setName("张三");
person2.setAge(21);
person2.setGender("男");
person2.setBirthday(new Date()); //创建list集合
List<Person> list = new ArrayList<Person>();
list.add(person);
list.add(person1);
list.add(person2);
ObjectMapper om = new ObjectMapper();
String s = om.writeValueAsString(list);
System.out.println(s);
/**
* 输出结果:
* [{"name":"张三","age":21,"gender":"男","birthday":"2019-08-23"},
* {"name":"张三","age":21,"gender":"男","birthday":"2019-08-23"},
* {"name":"张三","age":21,"gender":"男","birthday":"2019-08-23"}]
*
*/ } @Test
public void test4() throws IOException {
Map<String,Object> map=new HashMap<String, Object>();
map.put("name","李四0");
map.put("age",23);
map.put("gender","男"); ObjectMapper om = new ObjectMapper();
String s = om.writeValueAsString(map);
System.out.println(s);
/**
* 输出结果:
* {"gender":"男","name":"李四0","age":23}
*/
}
}
JSON转化为Java对象
public class JacksonTest {
@Test
public void test5() throws IOException {
//初始化
String json="{\"gender\":\"男\",\"name\":\"李四0\",\"age\":23}";
ObjectMapper ob=new ObjectMapper();
//转化为Java对象 person对象
Person person = ob.readValue(json, Person.class);
System.out.println(person);
}
}
案例--效验用户名是否存在
当文本输入框失去焦点,发送ajax请求,查询数据库中是否存在该用户
存在:提示存在
不存在:提示可用
1. 服务器响应的数据,在客户端使用时,要想当做json数据格式使用。有两种解决方案:
1. $.get(type):将最后一个参数type指定为"json"
2. 在服务器端设置MIME类型
response.setContentType("application/json;charset=utf-8");
效果图:
Servlet
import com.fasterxml.jackson.databind.ObjectMapper; import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map; @WebServlet("/findUserServlet")
public class FindUserServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//期望服务器响应回应的格式 {"userExsit":"true","msg":"用户名此用户名太受欢迎,请更换一个"}
// "userExsit":"false","msg":"用户名可用"}
Map<String, Object> map = new HashMap<String, Object>();
//设置相应格式为json
response.setContentType("application/json;charset=utf-8");
//获取用户名
String username = request.getParameter("username");
System.out.println(username);
//查询数据库
if ("tom".equals(username)) {
map.put("userExsit", true);
map.put("msg", "用户名此用户名太受欢迎,请更换一个"); } else {
map.put("userExsit", false);
map.put("msg", "用户名可用");
}
System.out.println(map);
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.writeValue(response.getWriter(), map); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
input {
padding: 10px;
margin: 5px;
} </style>
<script src="js/jquery-3.3.1.min.js"></script>
<script>
$(function () {
$("#username").blur(function () {
//获取username的值
var username = $(this).val(); //发送ajax请求
//期望服务器响应回应的格式 {"userExsit":"true","msg":"用户名此用户名太受欢迎,请更换一个"}
// "userExsit":"false","msg":"用户名可用"}
$.get("findUserServlet",{"username":username},function (data) { var span = $("#sp");
// 判断userExsit的值是否是true if (data.userExsit) {
//存在
span.html(data.msg) span.css("color", "red");
} else {
// 不存在
span.html(data.msg)
span.css("color", "green"); }
//1.
//},"json");
});
});
}) </script>
</head>
<body>
<div align="center">
<form action="" method="post">
用户名:<input type="text" id="username" name="username" placeholder="请输入用户名"><br><span id="sp" class="span"></span><br>
密  码:<input type="password" name="password" placeholder="请输入密码"><br>
<input type="submit" value="注册">
</form>
</div>
</body>
</html>
源码地址GitHub:https://github.com/PoetryAndYou/JQuery
JSON数据与Java对象的相互转换的更多相关文章
- JSON数据和Java对象的相互转换
JSON解析器: 常见的解析器: Jsonlib, Gson, fastjson, jackson 其中应用最广泛的是jackson,阿里的fastjson虽然比jackson快一点,但存在的问题比较 ...
- json字符串与java对象的相互转换(jackson)
1.java对象转换为json字符串 package com.chichung.json; import com.fasterxml.jackson.core.JsonProcessingExcept ...
- 使用Gson转换json数据为Java对象的一个例子
记录工作中碰到的一个内容. 原料是微信平台的一个接口json数据. { "errcode" : 0, "errmsg" : "ok", &q ...
- JSON解析器之jackson json数据和java对象转换
- Java中JSON字符串与java对象的互换实例详解
这篇文章主要介绍了在java中,JSON字符串与java对象的相互转换实例详解,非常不错,具有参考借鉴价值,需要的朋友可以参考下 在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JS ...
- Java中JSON字符串与java对象的互换实例详解(转)
http://www.jb51.net/article/90914.htm 在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JSON等,JSON作为一个轻量级的数据格式比xml效率要 ...
- 用JAVA进行Json数据解析(对象数组的相互嵌套)
这段时间我们在做一个英语翻译软件的小小小APP,涉及到了对Json数据的解析,所以特地来总结一下! 假设我们要对如下数据进行解析,其实在平时,返回的Json数据是很乱的,很难分清数据的关系,这是经过相 ...
- java json数据转List对象的集合-----阿里巴巴插件---及原生json---JSON 与 对象 、集合 之间的转换 JSON字符串和java对象的互转【json-lib】
List<RunfastFullLess> list=(List<RunfastFullLess>)JSONArray.parseObject(activity.getFull ...
- 一种从JSON数据创建Java类的高效办法
<一种从JSON数据创建Java类的高效办法> 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs JSON格式的数据经常会遇到,比如调用Web服 ...
随机推荐
- yum安装出现No package vim available解决办法
[root@iZwz96wgquf8g6okusxr0uZ yum.repos.d]# yum install yum-downloadLoaded plugins: fastestmirrorLoa ...
- windows上gedit 安装
1. 用浏览器打开https://wiki.gnome.org/Apps/Gedit 下载并安装 gedit 文本编辑器.这个操作无需管理员权限. 2. 把 gedit 放到桌面或者快速启动栏,这样你 ...
- CS231n:Python Numpy教程
Python 基本数据类型 容器 列表 字典 集合 元组 函数 类 Numpy 数组 访问数组 数据类型 数组计算 广播 SciPy 图像操作 MATLAB文件 点之间的距离 Matplotlib 绘 ...
- [HNOI2007] 理想正方形 二维ST表
题目描述 有一个a*b的整数组成的矩阵,现请你从中找出一个n*n的正方形区域,使得该区域所有数中的最大值和最小值的差最小. 输入输出格式 输入格式: 第一行为3个整数,分别表示a,b,n的值 第二行至 ...
- comparator接口实现时,只需要实现 int compare(T o1, T o2)方法?
从Comparator接口的源码,可以看到Comparator接口中的方法有三类: 1 普通接口方法 2 default方法 3 static方法 其中default方法和static方法 是java ...
- 详解 Redis 内存管理机制和实现
Redis是一个基于内存的键值数据库,其内存管理是非常重要的.本文内存管理的内容包括:过期键的懒性删除和过期删除以及内存溢出控制策略. 最大内存限制 Redis使用 maxmemory 参数限制最大可 ...
- centos 7.6修改ssh端口,设置防火墙规则
一.修改ssh端口 1 使用 root 用户进入 /etc/ssh目录 2 备份ssh配置文件 cp sshd_config sshd_config-bak 3 使用 vim 打开 sshd_conf ...
- day10整理(面对对象,过程,类和对象)
目录 一 回顾 (一)定义函数 (二)定义函数的三种形式 1.空函数 2.有参函数 3.无参函数 (三)函数的返回值 (四)函数的参数 1.形参 2.实参 二 面向过程编程 三 面向对象过程 四 类和 ...
- Udp 异步通信(三)
转自:https://blog.csdn.net/zhujunxxxxx/article/details/44258719 1)服务端 using System; using System.Colle ...
- (三)django--带Template的网站
我们接着(二),在new下新建一个templates(注意必须是这个名字,不然要进行配置),然后在该目录下新建一个test.html 2.我们在pycharm中新建的html文件里面不会有内容,我们输 ...