在Java web中使用json
json包下载
- 下载jar包当然是下大厂滴
- 推荐Alibaba的fastjson
- 推荐Google的gjson
- 本文讲fastjson
https://github.com/alibaba/fastjson.git
json的常见格式
- key - value 键值对
{"key":"value"}
- 多个key - value对
{"key1":"value", "key2":"value"}
- Java中的List集合
[{"k1":"v1", "k2":"v2"},{"k1":"v1", "k2":"v2"}]
- Java中的map集合(字典)
{"key1": {"k1":"v1", "k2":"v2"},"key2": {"k1":"v1", "k2":"v2"}}
fast-json包使用–Java中对象转换为json字符串
- 先以学生实体类为demo
package com.lovely.entity;import java.sql.Date;
import java.sql.Timestamp;import com.alibaba.fastjson.annotation.JSONField;public class Student {private Integer id;private String name;private Integer age;@JSONField(format="yyyy-MM-dd")private Date date;@JSONField(format="yyyy-MM-dd HH:mm:ss")private Timestamp time;public Student() {}public Student(Integer id, String name, Integer age, Date date,Timestamp time) {super();this.id = id;this.name = name;this.age = age;this.date = date;this.time = time;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}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 Date getDate() {return date;}public void setDate(Date date) {this.date = date;}public Timestamp getTime() {return time;}public void setTime(Timestamp time) {this.time = time;}@Overridepublic String toString() {return "Student [id=" + id + ", name=" + name + ", age=" + age+ ", date=" + date + ", time=" + time + "]\n";}}
- 把学生对象,list集合,map集合转换为json字符串
// 对于有日期的在属性上加上注解!上面加了。static Student stu1 = new Student(1, "rye", 20, new Date(System.currentTimeMillis()), new Timestamp(System.currentTimeMillis()));static Student stu2 = new Student(2, "bitQian", 19, new Date(System.currentTimeMillis()), new Timestamp(System.currentTimeMillis()));/*** 对象转换为json字符串 (有时间 日期的 加上@JSONField(format="yyyy-MM-dd") 注解)* {"key1":"value", "key2":"value"}*/static void objToJson1() {// 对于日期的转型 字段要添加注解Object json = JSON.toJSONString(stu1, true);System.out.println(json);}/*** 集合转成json字符串* [* {"k1":"v1", "k2":"v2"},* {"k1":"v1", "k2":"v2"}* ]*/static String arrToJson2() {List<Student> list = new ArrayList<Student>();list.add(stu1);list.add(stu2);String json = JSON.toJSONString(list, true);System.out.println(json);return json;}/*** map集合转换为json字符串* {* "key1": {"k1":"v1", "k2":"v2"},* "key2": {"k1":"v1", "k2":"v2"}* }*/static String mapToJson3() {Map<String, Student> map = new LinkedHashMap<>();map.put("stu1", stu1);map.put("stu2", stu2);String json = JSON.toJSONString(map, true);System.out.println(json);return json;}
- json字符串转换为对象
// 返序列化 把json字符串->student对象/集合对象/map字典对象static void jsonToObj1() {String json = JSON.toJSONString(stu1);Student obj = JSON.parseObject(json, Student.class);// 重写了student toString()System.out.println(obj);}static void jsonToArr2() {String json = arrToJson2();List<Student> list = JSON.parseArray(json, Student.class);System.out.println(list);}static void jsonToMap3() {String json = mapToJson3();Map<?, ?> map = JSON.parseObject(json, Map.class);System.out.println(map); }
- 测试map的json格式转换为map集合
public class Test1 {public static void main(String[] args) {// objToJson1();// arrToJson2();// mapToJson3();// jsonToObj1();// jsonToArr2();jsonToMap3();}}
{"stu1":{"age":20,"date":"2020-07-10","id":1,"name":"rye","time":"2020-07-10 21:13:31"},"stu2":{"age":19,"date":"2020-07-10","id":2,"name":"bitQian","time":"2020-07-10 21:13:31"}
}
{stu1={"id":1,"time":"2020-07-10 21:13:31","name":"rye","age":20,"date":"2020-07-10"}, stu2={"id":2,"time":"2020-07-10 21:13:31","name":"bitQian","age":19,"date":"2020-07-10"}}
Ajax请求servlet,以json作为数据格式交互
- 后台servlet
package com.lovely.servlet;import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import com.alibaba.fastjson.JSON;
import com.lovely.entity.Student;public class LoadDataServlet extends HttpServlet {/*** @author echo lovely* */private static final long serialVersionUID = 1L;@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {String stuJson = "";/***三种json(object list map)对象的取值 */String msg = req.getParameter("msg");Student stu1 = new Student();stu1.setId(1);stu1.setName("rye");stu1.setAge(20);Student stu2 = new Student();stu2.setId(2);stu2.setName("bitQian");stu2.setAge(19); if ("object".equals(msg)) {stuJson = JSON.toJSONString(stu1);} else if ("list".equals(msg)) {ArrayList<Student> list = new ArrayList<Student>();list.add(stu1);list.add(stu2);stuJson = JSON.toJSONString(list);} else if ("map".equals(msg)) {HashMap<String,Student> map = new HashMap<String, Student>();map.put("stu1", stu1);map.put("stu2", stu2);stuJson = JSON.toJSONString(map);}// 响应json格式字符串resp.setContentType("text/json;charset=utf-8");PrintWriter out = resp.getWriter();out.print(stuJson);out.close();}}
- 页面Ajax请求
<html><head><title>My JSP 'list.jsp' starting page</title><script type="text/javascript" src="js/jquery-3.2.1.js"></script><script type="text/javascript"> $(function() { // ready 函数.../*测试三种json(object list map)对象的取值 */$("#btn1").click(function() {$.get("LoadDataServlet",{"msg": "object"},function(data) {console.log(data);console.log(data.id + "\t" + data.name + "\t" + data.age);});});$("#btn2").click(function() {$.get("LoadDataServlet",{"msg": "list"}, function(list) {console.log(list);// 遍历list json数组for (var i = 0; i < list.length; i ++) {console.log(list[i]);}});});$("#btn3").click(function() {$.post("LoadDataServlet",{"msg": "map"},function (data) {console.log(data);for (var stu in data) {console.log(data[stu].id + "\t" + data[stu].name + "\t" + data[stu].age);}});});});</script></head><body><!-- 测试三种json格式字符串 --><input type="button" value="object" id="btn1"/><input type="button" value="list" id="btn2"/><input type="button" value="map" id="btn3"/></body>
</html>
单个student对象
list集合对象
map集合对象
- 更新…
在Java web中使用json相关推荐
- java web json_java web中对json的使用详解
一.在Java Web的开发过程中,如果希望调用Java对象转化成JSON对象等操作.则需要引入以下jar包,不然运行时则报错. 1.commons-beanutils.jar 2.commons-c ...
- java web 中有效解决中文乱码问题-pageEncoding与charset区别, response和request的setCharacterEncoding 区别
java web 中有效解决中文乱码问题-pageEncoding与charset区别, response和request的setCharacterEncoding 区别 参考文章: (1)java ...
- Java Web中的中文编码问题分析
一.为什么需要编码 在计算机中存储信息的最小单位是1个字节,即8bit,所以能标识的最大字符范围是0~255,而人类自然语言中例如汉语.日语要表示的符号太多,无法单纯用一个字节来完全表示,为了解决这个 ...
- java 控制jsp_JSP学习之Java Web中的安全控制实例详解
普通用户界面 修改登录的Servlet,修改后的代码如下: LoginProcess.java代码: package servlet; import javabean.User; import jav ...
- 第三章 深入分析Java Web中的中文编码问题
3.1 几种常见的编码格式 3.1.1 为什么要编码 一个字节 byte只能表示0~255个符号,要表示更多的字符,需要编码. 3.1.2 如何翻译 ASCII码:有128个,用一个字节的低7位表示. ...
- 用servlet路径访问一个html,java web中servlet、jsp、html 互相访问的路径问题
在html">java web种经常出现 404找不到网页的错误,究其原因,一般是访问的路径不对. html">java web中的路径使用按我的分法可以分两种情况,当 ...
- java web 中 读取windows图标并显示
java web中读取windows对应文件名的 系统图标 ....显示 1.获取系统图标工具类 package utils; import java.awt.Graphics; import j ...
- Java web中不同浏览器间导出Excel文件名称乱码问题解决方案
Java web中不同浏览器间导出Excel文件名称乱码问题解决方案 参考文章: (1)Java web中不同浏览器间导出Excel文件名称乱码问题解决方案 (2)https://www.cnblog ...
- 解决java web中safari浏览器下载后文件中文乱码问题
解决java web中safari浏览器下载后文件中文乱码问题 参考文章: (1)解决java web中safari浏览器下载后文件中文乱码问题 (2)https://www.cnblogs.com/ ...
最新文章
- 某大型银行深化系统之二十:异常规范
- java 实现雷达图,如何使用y轴为0到100的chart.js创建雷达图?
- 高并发高流量网站架构详解--转载
- access数据库拆分的用途_聊聊数据库设计一些经验 条条都是干货
- 前端月趋势榜:4 月最热门的 20 个前端开源项目 - 2104
- englishpod主持人对话文本_英语播客ESLPod学习方法+资源大全|Englishpod和eslpod的区别是什么...
- javascript一个重要知识点:事件。
- [Hnoi2013]消毒
- opencv常用函数
- hacker基础教程
- 服务器内存系统,服务器内存系统容量
- 新手入门makefile教程
- API函数大全(转载)
- 【技巧】谷歌Chrome浏览器清理缓存的两种方式
- 微信 php收藏功能实现,基于WordPress的微信JSSDK之分享与收藏的回调解决方案 - YangJunwei...
- 【报告分享】2020年K12在线教育行业广告策略用户调研报告(附下载)
- python tkinter学习6 scale滑条
- 上架被拒后如何再重新上传
- 走近门球运动·体育项目
- 前端 用nginx解决js跨域问题