JavaWeb学习笔记——JSON详解
本文是学习Java时所记录的学习笔记,本节记录了JSON的相关知识,需要掌握JSON的书写格式,懂得JSON与String类型的转换。
文章目录
- JSON简介
- 什么是JSON?
- JSON语法规则
- JSON语法示例
- JSON的具体实现
- JavaScript与JSON(前端处理JSON)
- JavaScript中使用JSON对象的方法
- JavaScript中字符串与JSON对象互转的方法
- Java与JSON(后端处理JSON)
- 通过JSON工具包处理JSON数据
- FastJSON需要的JAR包
- Fastjson工具使用方法
JSON简介
什么是JSON?
JavaScript Object Notation(JavaScript对象表示法),是一个轻量级的文本数据交换格式,数据的一种表达方式。独立于语言,具有自我描述性,容易理解。
因为JSON的结构简洁清晰,所以通常JavaScript和web服务器后端数据交互的时候会采用JSON格式进行传输。
需要能够读懂JSON格式的内容,掌握JSON转String和String转JSON。
JSON语法规则
- 数据由键/值成对出现,由逗号分隔
- 大括号({})代表一个完整的对象,拥有多个键值对
- 中括号([])保存数组,多个对象之间使用逗号分隔
JSON语法示例
{"sites":[{"name":"百度","url":"www.baidu.com"},{"name":"淘宝","url":"www.taobao.com"},{"name":"网易","url":"www.163.com"}]
}
JSON的具体实现
JavaScript与JSON(前端处理JSON)
JavaScript中使用JSON对象的方法
在JavaScript中,可以直接把JSON对象当做普通对象使用。
JavaScript中字符串与JSON对象互转的方法
JS中的方法 | 说明 | 示例 |
---|---|---|
JSON.parse() | 传入字符串,把字符串转成json | JSON.parse(str) |
JSON.stringify() | 传入对象,把JSON对象转为字符串 | JSON.stringify(json) |
Java与JSON(后端处理JSON)
通过JSON工具包处理JSON数据
把Java对象转换为JSON,或者JSON转换为Java对象的第三方组件,称为JSON工具包。常用的JSON工具包:
- FastJSON(国内阿里巴巴)
- Jackson(国外老牌)
- Gson(谷歌开发)
- Json-lib(开源平台)。
FastJSON需要的JAR包
jastjson.jar
官方网站:www.github.com 搜索jastjson
Fastjson工具使用方法
引用JAR包后可以直接使用
方法 | 说明 | 返回值 | 示例 |
---|---|---|---|
toJSONString() | 类方法,把Java对象转换为JSON字符换 | String | |
parseObject() | 类方法,把JSON字符串转换为Java对象 | JSON.parseObject(str,Employee.class) | |
toJSONString() | 将常用数据结构转换为JSON字符串 | String | |
parseArray() | 将JSON字符串转换为数组对象 | List | JSON.paarseArray(jsonstr,Employee.class) |
fastjson工具的@JsonField注解
在封装对象时,使用fastjson提供的@JsonField注解,可以定义对象中某个全局变量在JSON转换时采用注解属性所代表的含义。
例如:在employee.java类中的uname全局变量上一行使用@JSONField(name=“UserName”),则操作fastjson对该类的对象转换成JSON格式时,会把uname的改为UserName。
以下是@JSONField注解可选的属性:
注解属性 说明 示例 name 给当前变量起别名 @JSONField(name=“tom”) format 可用于格式化日期 @JSONField(format=“yyyy-MM-dd HH:mm:ss”) serialize 表示是否对该变量序列化,false为不序列化 @JSONField(serialize=false) 案例
- Employee.java类
public class Employee {private Integer empno;private String ename;private String job;//@JSONField(format="yyyy-MM-dd HH:mm:ss SSS")@JSONField(name = "hiredate" , format="yyyy-MM-dd")private Date hdate;private Float salary;@JSONField(serialize = false)private String dname;//以下省略部分内容 }
- FastJsonDemo.java类
public class FastJsonDemo { public static void main(String[] args) {Employee employee = new Employee();employee.setEmpno(4488);employee.setEname("张三");employee.setJob("程序员");employee.setSalary(10000f);employee.setDname("开发部");Calendar c = Calendar.getInstance();c.set(2019, 0, 30, 0, 0, 0);employee.setHdate(c.getTime());String json = JSON.toJSONString(employee);System.out.println(json);Employee emp = JSON.parseObject(json, Employee.class);System.out.println(emp.getEname()); }
JavaWeb学习笔记——JSON详解相关推荐
- python学习笔记 正则表达式 详解2
python学习笔记 正则表达式 详解 行定位符 行定位符就是用来描述子串的边界."^"表示行的开始:"$"表示行的结尾 ^tm:匹配以子串tm的开始位置是行头 ...
- IOS开发学习笔记-----UILabel 详解
IOS开发学习笔记-----UILabel 详解 01 //创建uilabel 02 UILabel *label1 = [[UILabel alloc] initWithFrame:CGRectMa ...
- wringPi 初始化GPIO 为上拉_敏矽微电子Cortex-M0学习笔记04-GPIO详解及应用实例
前面我们已经对敏矽微电子的基于cortex m0内核的ME32F030R8T6的基本功能做了介绍,然后详细讲解了开发环境MDK的安装,pack包的安装,工程的建立及程序的仿真,紧接着讲解了ME32F0 ...
- 关于ClassLoader的学习笔记,详解版
ClassLoader 详解 ClassLoader 做什么的? 延迟加载 各司其职 ClassLoader 传递性 双亲委派 Class.forName 自定义加载器 Class.forName v ...
- DNS 学习笔记之三- 详解DNS的资源记录
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 最 ...
- ctfhub技能书+历年真题学习笔记(详解)
Web Web前置技能 HTTP协议 请求方式 题目:HTTP Method is GET Use CTF**B Method, I will give you flag. Hint: If you ...
- Linux实操篇——实用指令学习笔记(详解)
9.3帮助指令 9.3.1介绍 当我们对某个指令不熟悉时,我们可以使用Linux提供的帮助指令来了解这个指令的使用方法. 9.3.2man 获得帮助信息 基本语法 man[命令或配置文件](功能描述: ...
- 十一、MySQL视图学习笔记(详解)
视图 含义:理解成一张虚拟的表,和普通表一样使用 mysql5.1版本出现的新特性,是通过表动态生成的数据 比如:舞蹈班和普通班级的对比 视图和表的区别: 名称 创建语法的关键字 使用 占用物理空间 ...
- 进厂手册:Git 学习笔记(详解命令)
文章目录 git 对象 通过git对象进行文件的保存 git对象的缺点 树对象 构建树对象 提交对象 高层命令 工作区的文件状态 git reset hard 咋用以及用错了怎么恢复 git chec ...
最新文章
- centos7删除符号链接_技术|在 Linux 中怎样移除(删除)符号链接
- linux进程间通信-管道
- include element into ABAP word document
- 堆和栈的联系与区别(转贴)
- #开工新姿势#开启一年新征程,云社区叫你来充电啦!
- tm是什么域名_入驻天猫,需要什么条件?
- VMware虚拟机(Ubuntu)添加物理串口
- 3dmax:3dmax三维VR渲染设置之高级灯光渲染(光度学—自由灯光、目标灯光、天空门户)图文教程之详细攻略
- sqlserver 数据库文件损坏、数据库可疑修复处理
- hdu1175连连看
- 【跟我一起学Linux之Ubuntu】-概述与安装配置笔记
- mac误删除文件恢复,mac文件丢失如何找回
- 【抽象代数】环、子环、理想、商环、环的同态
- .csv是什么文件格式,什么软件可以打开?xls与csv文件是什么区别?功能和作用上有什么不同?
- SQL语句中引号(')、quotedstr()、('')、format()在SQL语句中的用法
- 奇怪的日常 [ 2 ]:Python下合成萝莉/御姐音
- 【编程语言】函数式编程 Functional Programming
- Java内省用法_java内省机制及PropertyUtils使用方法
- 文章摘要智能提取【基于BERT技术】
- 惠普DV2000 V3000笔记本散热不良温度过高简单改造见效降温