json包下载

  • 下载jar包当然是下大厂滴

    1. 推荐Alibaba的fastjson
    2. 推荐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相关推荐

  1. java web json_java web中对json的使用详解

    一.在Java Web的开发过程中,如果希望调用Java对象转化成JSON对象等操作.则需要引入以下jar包,不然运行时则报错. 1.commons-beanutils.jar 2.commons-c ...

  2. java web 中有效解决中文乱码问题-pageEncoding与charset区别, response和request的setCharacterEncoding 区别

    java web 中有效解决中文乱码问题-pageEncoding与charset区别, response和request的setCharacterEncoding 区别 参考文章: (1)java ...

  3. Java Web中的中文编码问题分析

    一.为什么需要编码 在计算机中存储信息的最小单位是1个字节,即8bit,所以能标识的最大字符范围是0~255,而人类自然语言中例如汉语.日语要表示的符号太多,无法单纯用一个字节来完全表示,为了解决这个 ...

  4. java 控制jsp_JSP学习之Java Web中的安全控制实例详解

    普通用户界面 修改登录的Servlet,修改后的代码如下: LoginProcess.java代码: package servlet; import javabean.User; import jav ...

  5. 第三章 深入分析Java Web中的中文编码问题

    3.1 几种常见的编码格式 3.1.1 为什么要编码 一个字节 byte只能表示0~255个符号,要表示更多的字符,需要编码. 3.1.2 如何翻译 ASCII码:有128个,用一个字节的低7位表示. ...

  6. 用servlet路径访问一个html,java web中servlet、jsp、html 互相访问的路径问题

    在html">java web种经常出现 404找不到网页的错误,究其原因,一般是访问的路径不对. html">java web中的路径使用按我的分法可以分两种情况,当 ...

  7. java web 中 读取windows图标并显示

    java web中读取windows对应文件名的 系统图标 ....显示 1.获取系统图标工具类 package utils;  import java.awt.Graphics;  import j ...

  8. Java web中不同浏览器间导出Excel文件名称乱码问题解决方案

    Java web中不同浏览器间导出Excel文件名称乱码问题解决方案 参考文章: (1)Java web中不同浏览器间导出Excel文件名称乱码问题解决方案 (2)https://www.cnblog ...

  9. 解决java web中safari浏览器下载后文件中文乱码问题

    解决java web中safari浏览器下载后文件中文乱码问题 参考文章: (1)解决java web中safari浏览器下载后文件中文乱码问题 (2)https://www.cnblogs.com/ ...

最新文章

  1. 某大型银行深化系统之二十:异常规范
  2. java 实现雷达图,如何使用y轴为0到100的chart.js创建雷达图?
  3. 高并发高流量网站架构详解--转载
  4. access数据库拆分的用途_聊聊数据库设计一些经验 条条都是干货
  5. 前端月趋势榜:4 月最热门的 20 个前端开源项目 - 2104
  6. englishpod主持人对话文本_英语播客ESLPod学习方法+资源大全|Englishpod和eslpod的区别是什么...
  7. javascript一个重要知识点:事件。
  8. [Hnoi2013]消毒
  9. opencv常用函数
  10. hacker基础教程
  11. 服务器内存系统,服务器内存系统容量
  12. 新手入门makefile教程
  13. API函数大全(转载)
  14. 【技巧】谷歌Chrome浏览器清理缓存的两种方式
  15. 微信 php收藏功能实现,基于WordPress的微信JSSDK之分享与收藏的回调解决方案 - YangJunwei...
  16. 【报告分享】2020年K12在线教育行业广告策略用户调研报告(附下载)
  17. python tkinter学习6 scale滑条
  18. 上架被拒后如何再重新上传
  19. 走近门球运动·体育项目
  20. 前端 用nginx解决js跨域问题

热门文章

  1. 前端学习(1423):ajax错误处理
  2. 前端学习(688):断点调试
  3. 玩转oracle 11g(9):crud操作(亲测)
  4. Linux: 两个USB摄像头的数据采集问题
  5. JavaScript基础知识(Date 的方法)
  6. python中列表字典和字符串的相互转化
  7. 串口数据字节位的理解
  8. 日志汇总:logging、logger
  9. iPhone X Web 设计
  10. HDU 5617 Jam's maze dp+滚动数组