JSON轻量级数据交换格式

62 篇文章 3 订阅

JSON轻量级数据交换格式

JSON介绍

  • JSON(JavaScript Object Notation JavaScript对象表示法)
  • JSON是轻量级的文本数据交换格式
  • JSON独立于语言,具有自我描述性,更易理解

JSON语法规则

  • 数据由键(key)/值(value)描述,由逗号分隔
  • 大括号代表一个完整的对象,拥有多个键值对
  • 中括号保存数组,多个对象之间使用逗号分隔
  • 复合类型的值只能是数组或对象,不能是函数、日期对象、正则表达式等。
  • 简单类型的值包括:字符串、数值、布尔值和null(不能使用NaN/undefined)。
  • 字符串必须使用双引号表示,不能使用单引号,或者没有双引号。
  • 对象的键必须放在双引号里。
  • 数组或对象的最后一个成员后面不能加逗号。

JavaScript访问JSON对象

JavaScript中可以直接访问JSON对象

<script>
var emp = [
	"employee": {
		"市场部": [{
			"name": "张三",
			"salary": 7000,
			"time": "1999-02-09",
			"job": "市场营销专员"
		}, {
			"name": "李四",
			"salary": 9000,
			"time": "1997-02-09",
			"job": "市场经理"
		}],
		"开发部": [{
			"name": "王五",
			"salary": 9000,
			"time": "2006-02-09",
			"job": "Java开发工程师"
		}, {
			"name": "孙六",
			"salary": 12000,
			"time": "2003-02-09",
			"job": "项目总监"
		}],
		"总经理": {
			"name": "赵一",
			"salary": 26000,
			"time": "199-02-09"
		}
	}
];

console.log(emp);
</scrhtmlipt>

JavaScript中将字符串互相转换为JSON

  • JSON.parse()方法将字符串转为JSON对象
  • JSON.stringify()方法将JSON对象转换为字符串

注意:JSON对象是浏览器内置对象,但是要版本ie6/7以上才有

字符串转JSON:

<script type="text/javascript">
	var str = "{\"class_name\":\"一年级二班\"}"
	var json = JSON.parse(str);
	console.log(str);
	console.log(json);
	document.write("班级:"+json.class_name);
</script>

JSON转为字符串:

 
</script>

Javascript初始化JSON对象

<script type="text/javascript">
	var json = {};
	json.class_name = "一年级二班";
	json.age = 18;
	console.log(json);
</script>

JSON与Java交互

  • Java的JSON工具包还有FastJson(国内阿里巴巴)、Jackson(国外老牌的工具包)、Gson(Google)、Json-lib(很多开源平台的明星项目)…
  • FastJson是阿里巴巴著名的JSON序列号与反序列化工具包
  • FastJson国内拥有大量使用者,拥有API简单,效率高等优点

FastJson:

https://github.com/alibaba/fastjson/wiki/Quick-Start-CN

下载jar包导入工程

FastJson对象序列化与反序列化

Employee.java

package json;

import java.util.Date;

import com.alibaba.fastjson.annotation.JSONField;

public class Employee {
	private Integer empno;
	private String ename;
	private String job;
//	使用注解对日期进行格式化说明,否则输出一个1970年到现在的毫秒段
//	@JSONField(format="yyyy-MM-dd HH:mm:ss SSS")	
	//还可以给设置别名name
	@JSONField(name="hiredate", format="yyyy-MM-dd")	
	private Date hdate;
	private Float salary;
	//说明该属性不进行序列化
	@JSONField(serialize=false)
	private String dname;
	
	public Employee() {}
	
	public Employee(Integer empno, String ename, String job, Date hdate, Float salary, String dname) {
		super();
		this.empno = empno;
		this.ename = ename;
		this.job = job;
		this.hdate = hdate;
		this.salary = salary;
		this.dname = dname;
	}
	
	public Integer getEmpno() {
		return empno;
	}
	public void setEmpno(Integer empno) {
		this.empno = empno;
	}
	public String getEname() {
		return ename;
	}
	public void setEname(String ename) {
		this.ename = ename;
	}
	public String getJob() {
		return job;
	}
	public void setJob(String job) {
		this.job = job;
	}
	public Date getHdate() {
		return hdate;
	}
	public void setHdate(Date hdate) {
		this.hdate = hdate;
	}
	public Float getSalary() {
		return salary;
	}
	public void setSalary(Float salary) {
		this.salary = salary;
	}
	public String getDname() {
		return dname;
	}
	public void setDname(String dname) {
		this.dname = dname;
	}
	
}

FastJsonSample.java

package json;

import java.util.Calendar;

import com.alibaba.fastjson.JSON;

public class FastJsonSample {
	public static void main(String[] args) {
		Calendar cal = Calendar.getInstance();
		cal.set(2021, 0, 30, 0, 0, 0);
		
		Employee employee = new Employee(666, "花木兰", "客户经理", cal.getTime(), 10000f, "市场部");
		//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.getDname());
		
	}
}

FastJSON对象数组序列化与反序列化

FastJSONSample2.java

package json;

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(i);
			employee.setEname("员工"+i);
			emplist.add(employee);
		}
		//依然用JSON.toJSONString对对象列表进行转换;如果属性为null则不转换
		String json = JSON.toJSONString(emplist);
		System.out.print(json);
//		JSON字符串列表转换为list集合
		List<Employee> emps = JSON.parseArray(json, Employee.class);
		for(Employee e:emps) {
			System.out.println(e.getEmpno()+e.getEname());
		}
	}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

摘星喵Pro

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值