在Java web中使用json

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集合对象

  • 更新…

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/420799.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

方法重载

Overload&#xff1a; 1、一个类中方法名字一样&#xff0c;参数不一样的&#xff08;参数类型、参数个数&#xff09;&#xff0c;可构成重载&#xff1b; 2、构造方法中也可以使用方法重载&#xff1b; 转载于:https://www.cnblogs.com/link1220/p/3825252.html

1019 数字黑洞 (20分)

输入样例 1&#xff1a; 6767 输出样例 1&#xff1a; 7766 - 6677 1089 9810 - 0189 9621 9621 - 1269 8352 8532 - 2358 6174 输入样例 2&#xff1a; 2222 解体心得&#xff1a; 在初次写str2list时没有考虑到输入是‘123’这样的情形&#xff1b; # -*- coding: …

再看数据库——(2)视图

概念 *是从用户使用数据库的观点来说的。 *从一个或多个表&#xff08;视图&#xff09;中导出来的 *一个虚表&#xff0c;或者说查询表 为什么要用视图呢&#xff1f; 一是简单&#xff0c;看到的就是需要的。视图不仅可以简化用户对数据的理解&#xff0c;也可以简化他们的操…

spring bean的创建,生命周期

1. 初探spring 什么是spring Spirng 是分层的Java se/ee应用full-stack&#xff08;web层mvc dao层jdbc模板 业务事务管理&#xff09;轻量级开源框架&#xff0c;以IoC(inverse of control :反转和控制) 和 AOP&#xff08;Aspect Oriented Programming: 面向切面编程&#xf…

1025 反转链表 (25分)

输入样例&#xff1a; 00100 6 4 00000 4 99999 00100 1 12309 68237 6 -1 33218 3 00000 99999 5 68237 12309 2 33218 输出样例&#xff1a; 00000 4 33218 33218 3 12309 12309 2 00100 00100 1 99999 99999 5 68237 68237 6 -1 解题心得&#xff1a; 本题两个注意点&am…

网站如何启用SSL安全证书?IIS7启用新建Https:/

网站使用SSL&#xff0c;通过SSL证书申请&#xff0c;然后导入之后。我们需要对网站进行设置才能正常使用SSL证书&#xff0c;具体如何操作让网站启用SSL呢&#xff0c;本经验以一个网站添加SSL主机头的方式为例来&#xff0c;网站启用SSL服务器安全证书。(如果没有证书的&…

从0实现三层神经网络

本文目标 分享李沐老师关于深度学习的观点&#xff1a;1⃣️从实践的角度入手深度学习可能比单纯的研究算法更好&#xff1b;2⃣️如果想学习深度学习&#xff0c;要只用简单的数据结构&#xff0c;譬如numpy、NDArray&#xff0c;从0实现一个深度学习算法&#xff0c;这样才能…

js乱码解决

mmp最近在写项目&#xff0c;引入js文件&#xff0c;f12控制台老给我报红色的错误&#xff0c; 点开&#xff0c;是引入js文件中文乱码。。。反手myeclipse打开js文件&#xff0c;也正常啊&#xff0c;中文没乱码。。。 解决办法 打开js文件&#xff0c;设置为带bom的utf-8编码…

C# 去除所有的html标签

/// <summary> /// 去除所有的html标签 /// </summary> /// <param name"strhtml"></param> /// <returns></returns> public static string Removestriphtml(string strhtml) { string stroutput strhtml; Regex regex new R…

面向对象方法使用gluon

一、面向过程与面向对象的优缺点 面向过程使用mxnet&#xff0c;就是使用gluon封装好的对象&#xff0c;不加改动的表达机器学习的逻辑过程&#xff0c;其特点是方便、快捷&#xff0c;缺点是不够灵活&#xff08;虽然可以应对90%以上的问题了&#xff09;&#xff0c;面向对象…

Mapreduce执行过程分析(基于Hadoop2.4)——(一)

1 概述 该瞅瞅MapReduce的内部运行原理了&#xff0c;以前只知道个皮毛&#xff0c;再不搞搞&#xff0c;不然怎么死的都不晓得。下文会以2.4版本中的WordCount这个经典例子作为分析的切入点&#xff0c;一步步来看里面到底是个什么情况。 2 为什么要使用MapReduce Map/Reduce&…

spring配置数据源

spring配置数据源1. 什么是数据源连接池2. 手动创建数据源&#xff08;c3p0&#xff0c;druid&#xff09;2.1 导入数据库连接驱动&#xff0c;数据源pom坐标2.2 创建数据源2.3 配置jdbc.properties, 解耦拿到数据源3. spring配置数据源3.1 bean方式创建数据源13.2 bean方式创建…

基于mxnet的Regression问题Kaggle比赛代码框架

一、概述 书中3.16节扩展一下可以作为kaggle比赛的框架&#xff0c;这个赛题的名字是House Prices: Advanced Regression Techniques&#xff0c;是一个Regression问题。 二、Deeplearning的一般流程 结合李航《统计学习方法》中对机器学习流程的总结&#xff0c;分为data、…

centos8安装

一. 下载centos centos下载 下载镜像版 mini版本 二&#xff0c;安装centos8 虚拟机安装 可 打开虚拟机安装centos 选择下载的镜像 配置磁盘大小 配置资源 配置虚拟机内存&#xff0c;处理器个数等. 安装成功后&#xff0c;也可配置

alert,confirm和prompt

1.警告消息框alertalert 方法有一个参数&#xff0c;即希望对用户显示的文本字符串。该字符串不是 HTML 格式。该消息框提供了一个“确定”按钮让用户关闭该消息框&#xff0c;并且该消息框是模式对话框&#xff0c;也就是说&#xff0c;用户必须先关闭该消息框然后才能继续进行…

(一)卷积网络之基础要点

一、提出问题 对于生活生产中的表格数据&#xff0c;至多也就上百维&#xff0c;而且表格数据的行与行之间没有序列和位置上的关系&#xff0c;所以用传统的机器学习算法就可轻松的解决这些问题。但是到了图片数据&#xff0c;传统机器学习就非常吃力了&#xff0c;一个普通的…

Windows Phone本地数据库(SQLCE):3、[table]attribute(翻译) (转)

这是“windows phone mango本地数据库&#xff08;sqlce&#xff09;”系列短片文章的第三篇。 为了让你开始在Windows Phone Mango中使用数据库&#xff0c;这一系列短片文章将覆盖所有你需要知道的知识点。这个时候我将谈谈有关你使用windows phone mango本地数据库时使用[ta…