1. 程式人生 > 其它 >Json的使用和FastJSON的使用

Json的使用和FastJSON的使用

技術標籤:java學習json

利用Json儲存員工資訊

建立emp.json檔案

[
	{
		"empno": 110,
		"ename": "李白",
		"job": "軟體工程師",
		"hiredate": "2021-01-12",
		"salary": 13000,
		"dname": "開發部"
	},
	{
		"empno": 111,
		"ename": "王維",
		"job": "客戶經理",
		"hiredate": "2020-11-23",
		"salary": 23000,
		"dname": "市場部",
		"customers": [
			{
				"cname": "小白"
			},
			{
				"cname": "小明"
			},
			{
				"cname": "jack"
			}
		]
	},
	{
		"empno": 111,
		"ename": "杜甫",
		"job": "專案經理",
		"hiredate": "2000-10-13",
		"salary": 30000,
		"dname": "市場部"
	}
]

使用js訪問json資料

sample.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
	var json = [ {
		"empno" : 110,
		"ename" : "李白",
		"job" : "軟體工程師",
		"hiredate" : "2021-01-12",
		"salary" : 13000,
		"dname" : "開發部"
	}, {
		"empno" : 111,
		"ename" : "王維",
		"job" : "客戶經理",
		"hiredate" : "2020-11-23",
		"salary" : 23000,
		"dname" : "市場部",
		"customers" : [ {
			"cname" : "小白"
		}, {
			"cname" : "小明"
		}, {
			"cname" : "jack"
		} ]
	}, {
		"empno" : 111,
		"ename" : "杜甫",
		"job" : "專案經理",
		"hiredate" : "2000-10-13",
		"salary" : 30000,
		"dname" : "市場部"
	} ];
	//控制檯輸出
	console.log(json);
	for(var i=0;i<json.length;i++){
		var emp=json[i];
		document.write("<h1>");
		document.write("序號:"+(i+1));
		document.write(","+emp.empno);
		document.write(","+emp.ename);
		document.write(","+emp.job);
		document.write(","+emp.hiredate);
		document.write(","+emp.salary);
		document.write(","+emp.dname);
		document.write("</h1>");
		if(emp.customers!=null){
			document.write("<h2>");
				for(var j=0;j<emp.customers.length;j++){
					var cus=emp.customers[j];
					document.write(cus.cname+"  ");
				}
			document.write("</h2>");
		}
	}
	
</script>
</head>
<body>

</body>
</html>

Json與字串物件互相轉換

  • JSON.parse()方法將字串轉換為JSON物件
<script type="text/javascript">
	var str="{\"class_name\":\"軟體工程1班\"}"; //字串
	var json=JSON.parse(str);   //字串轉json物件
	console.log(json);
	console.log(str);
	document.write("班級:"+json.class_name);
</script>
  • JSON.stringify()方法將JSON物件轉換為字串
<script type="text/javascript">
	var json1={"class_name":"電腦科學2班"};  //json物件轉字串
	var str1=JSON.stringify(json1);
	console.log(json1);
	console.log(str1);
</script>

FastJSON的使用

java的JSON的工具包,把java物件轉換成json物件

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

物件序列化與反序列化

Employee.java

package com.ulikeme.json;

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")
	private Date hdate;
	private Float salary;
	/**
	 * 此註解設定不對dname序列化
	 */
	@JSONField(serialize=false)
	private String dname;
	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;
	}
	
	
	
}

FastJsonSample1.java

package com.ulikeme.json;

import java.util.Calendar;

import com.alibaba.fastjson.JSON;

public class FastJsonSample1 {

	public static void main(String[] args) {
		// TODO 自動生成的方法存根
		//設定時間
		Calendar c=Calendar.getInstance();
		c.set(2018, 00, 20);
		Employee employee=new Employee(110, "李白", "程式設計師",c.getTime() ,10000f, "開發部");
		//FastJson中提供了Json物件,完成物件與json物件的互相轉換
		String json= JSON.toJSONString(employee);
		System.out.println(json);
		System.out.println("---------------------");
		//將json轉換成物件
		 Employee emp= JSON.parseObject(json, Employee.class);
		 System.out.println(emp.getEname());
		
	}

}

物件陣列序列化與反序列化


public class FastJsonSample2 {

	public static void main(String[] args) {
		// TODO 自動生成的方法存根
		List emplist=new ArrayList();
		for(int i=1;i<=10;i++) {
			Employee employee=new Employee();
			employee.setEmpno(100+i);
			employee.setEname("員工"+i);
			emplist.add(employee);
		}
		//可以把陣列,list,set進行json格式化輸出
		System.out.println();
		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.getEname()+":"+e.getEmpno());
		}
	}

}