本文是学习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

官方网站: 搜索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());
}