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服 ...
随机推荐
- 阿里terway源码分析
背景 随着公司业务的发展,底层容器环境也需要在各个区域部署,实现多云架构, 使用各个云厂商提供的CNI插件是k8s多云环境下网络架构的一种高效的解法.我们在阿里云的方案中,便用到了阿里云提供的CNI插 ...
- SQLMAP SSI注入错误解决
记一次SQL注入 目标地址:https://www.xxxx.com/ 之前补天提交过这个注入 后来貌似”修复了”(实际就是装了安全狗和过滤了一些关键字) 不过今天试了下 还是可以注入 可以看到已经 ...
- 机器学习:weka源码在eclipse的配置和异常VerifyError的解决
今天把weka源码导入eclipse,打算学习下weka源码,遇到一些问题,网上资料不足,自己总结下,希望为后来人铺路. 1)新建java项目,命名weka3-6 2)把weka-src.jar解压, ...
- Cocos2d-x 学习笔记(16) 触摸事件与分发 EventTouch dispatchTouchEvent EventListenerTouch
1. EventTouch 触摸事件的成员变量:枚举EventCode.存储Touch的容器. 不同的EventCode代表不同时机的触摸事件,能让监听器调用不同的回调函数. enum class E ...
- django 后端开发-01 配置工作:
# Django 配置工作 1: 配置好数据库 2: 配置好模板文件路径 3: 配置好静态文件路径 4: 配置好时区 5: 配置好模板的static标签 1: 配置好数据库 1.1 配置django ...
- Juc1024小半年总结-面试篇
大家好,我叫Juc 这大概是我时隔2年度多 第一次以分享的形式发的第一篇公众号 今天是2019年10月26 本想在10月24就分享一下 可惜前面两天时间太忙... 很凑巧,今天我出来工作刚好满4个月, ...
- 百万年薪python之路 -- JS的BOM与DOM对象
BOM对象 location对象 location.href 获取URL location.href="URL" // 跳转到指定页面 location.reload() 重新加载 ...
- 使用 Django 项目中的 ORM 编写伪造测试数据脚本
作者:HelloGitHub-追梦人物 文中所涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 为了防止博客首页展示的文章过多以及提升加载速度,可以对文章列表进行分页展示.不过这需 ...
- krry-transfer ⏤ 基于 element 的升级版穿梭框组件发布到 npm 啦
博客地址:https://ainyi.com/81 基于 element ui 的==升级版穿梭框组件==发布到 npm 啦 看过我之前博客的同学或许知道我之前写过关于 element 穿梭框组件重构 ...
- docker-compose下的java应用启动顺序两部曲之二:实战
上篇回顾 本文是<docker-compose下的java应用启动顺序两部曲>的终篇,在上一篇<docker-compose下的java应用启动顺序两部曲之一:问题分析>中,我 ...