本文是学习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
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());
}
















