本文是学习Java时所记录的学习笔记,本节记录了JSON的相关知识,需要掌握JSON的书写格式,懂得JSON与String类型的转换。
文章目录
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()); }