JSON

JSON介绍:

  1. JavaScript Objecct Notation(JavaScript对象表示法)
  2. JSON是轻量级的文本数据交换格式
  3. JSON对立与语言,具有自我描述性

JSON语法规则:

  1. 数据由键**(key)/值(value)**描述,由冒号分隔
{
	"sites":[{"name":"慕课网',"url":"www.imooc.com"}]
}
  • JSON中标准的书写格式键值(key/value)都必须要用双引号进行包裹
  • key和value中间使用冒号分隔开
  1. 大括号代表一个完整的对象,可以拥有多个键/值对
    例如:
{ "firstName":"John" , "lastName":"Doe" }
  • 大括号包裹的叫JSON对象,一个JSON对象包含多组key/value对,多组key/value对用逗号隔开;
  1. 中括号保存数组,多个对象之间保存间隔
  • 中括号包裹的叫数组,一个数组中可以包含多个JSON对象,多个JSON对象用逗号隔开
    数组的例子:
[
	{
		"empno": 7369,
		"ename": "李宁",
		"job": "软件工程师",
		"hiredate": "2017-05-12",
		"salary": 13000,
		"dname": "研发部"
	},
	{
		"empno": 7499,
		"ename": "王乐",
		"job": "客户经理",
		"hiredate": "2017-04-22",
		"salary": 10000,
		"dname": "市场部",
		"customers": [
			{
				"cname": "李东"
			},
			{
				"cname": "刘楠"
			}
		]
	}
]

在这里插入图片描述

FastJSON应用

员工类:

import java.util.Date;

import com.alibaba.fastjson.annotation.JSONField;

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;
	//省略get/set/构造方法
}
1. FastJSON对象序列化与反序列化
//FastJSON中提供了JSON对象,完成对象与JSON字符串的互相转换
		//序列化(将对象转化为json)
		String json = JSON.toJSONString(employee);
		System.out.println(json);
		//反序列化(将json转化为对象)
		Employee emp = JSON.parseObject(json, Employee.class);
		System.out.println(emp.getEname());
  • 序列化(将对象转化为json)运行结果
  • 在这里插入图片描述
  • 反序列化(将json转化为对象) 运行结果
    在这里插入图片描述
  • 将时间变量格式化
//@JSONField(format="yyyy-MM-dd HH:mm:ss SSS")
	@JSONField(name = "hiredate" , format="yyyy-MM-dd")
	private Date hdate;
  • 使用注解使得指定变量不序列化
@JSONField(serialize = false)
	private String dname;
2. FastJSON对象数组序(list)列化与反序列化
import java.util.ArrayList;
import java.util.List;

import com.alibaba.fastjson.JSON;

public class FastJsonSample2 {
	public static void main(String[] args) {
		List emplist = new ArrayList();
		for (int i = 1 ; i <= 100 ; i++) {
			Employee employee = new Employee();
			employee.setEmpno(4488 + i);
			employee.setEname("员工" + i);
			emplist.add(employee);
		}
		//序列化(将对象转化为json)
		String json = JSON.toJSONString(emplist);
		System.out.println(json);
		//反序列化(将json转化为对象)
		List<Employee> emps = JSON.parseArray(json , Employee.class);
		for(Employee e : emps) {
			System.out.println(e.getEmpno() + ":" + e.getEname());
		}
	}
}

  • 运行结果
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值