Advertisement

一篇文章弄懂JSON和FastJSON

阅读量:

#一篇文章弄懂JSON和FastJSON

JSON介绍

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

JSON语法规则

  • 数据由键(key)/值(value)描述,由逗号分隔
  • 大括号代表一个完整的对象,拥有多个键/值对
  • 中括号保存数组,多个对象之间使用逗号分隔

利用JSON存储员工信息:

复制代码
    [
    	{
    		"empno": 1234,
    		"ename": "Ndon",
    		"job": "Professor",
    		"hiredate": "2015-07-10",
    		"salary": "10000",
    		"dname": "研发部"
    	},
    	{
    		"empno": 1235,
    		"ename": "Mingyueji",
    		"job": "Associate Professor",
    		"hiredate": "2014-07-10",
    		"salary": "100000",
    		"dname": "Medicine",
    		"customer": [
    			{
    				"cname": "Iris"
    			},
    			{
    				"cname": "Nick"
    			}
    		]
    	}
    ]

JavaScript访问JSON对象

复制代码
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    <script type="text/javascript">
    	var json = [
    		{
    			"empno": 1234,
    			"ename": "Ndon",
    			"job": "Professor",
    			"hiredate": "2015-07-10",
    			"salary": "10000",
    			"dname": "研发部"
    		},
    		{
    			"empno": 1235,
    			"ename": "Mingdong",
    			"job": "Associate Professor",
    			"hiredate": "2014-07-10",
    			"salary": "100000",
    			"dname": "Medicine",
    			"customer": [
    				{
    					"cname": "Iris"
    				},
    				{
    					"cname": "Nick"
    				}
    			]
    		}
    	];
    	
    	for(var i = 0; i< json.length;i++){
    		var emp = json[i];
    		document.write("<h1>");
    		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>");
    		
    		document.write("<h1>");
    		if(emp.customer != null){
    			for(var j = 0;j<emp.customer.length;j++){
    				document.write(emp.customer[j].cname+".")
    			}
    		}
    	}
    	
    
    </script>
    </head>
    <body>
    
    </body>
    </html>

JSON与字符串互相转换

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

JS中字符串和JSON之间相互转换:

复制代码
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>字符串转JSON</title>
    <script type="text/javascript">
    	var str = "{\"Class_name\":\"1403\"}";
    	var json = JSON.parse(str)
    	var str1 = JSON.stringify(json);
    	console.log(str)
    	console.log(json)
    	document.write("My Class:"+ json.Class_name)
    	document.write("My new String :"+str1)
    	
    	var json1 = {}
    	json1.Class_name = "五年级2班"
    	json1.teacher = "Wuyun"
    	json1.floor = "二楼"
    	console.log(json1)
    </script>
    </head>
    <body>
    
    </body>
    </html>

FastJSON

最新版下载地址:https://search.maven.org/remote_content?g=com.alibaba&a=fastjson&v=LATEST

为什么要用FastJSON? JSON与Java交互

Java的JSON工具包还有FastJson、Jackson、 Gson. Json-lb…

FastJson是阿里巴巴著名的JSON序列化与反序列工具包

FastJson国内拥有大量使用者,拥有API简单,效率高等优点

Debug
在这里插入图片描述

FastJSON中对象序列化与反序列化

Employee.java

复制代码
    package com.bayar.employee;
    
    import java.util.Date;
    
    import com.alibaba.fastjson.annotation.JSONField;
    
    public class Employee {
    	private Integer empno;
    	private String ename;
    	private String job;
    	@JSONField(name="入职时间", format="yyyy-MM-dd")
    	private Date hiredata;
    	private Float salary;
    	//某一项无关紧要,不想序列化时用@JSONField(serialize=false)
    	@JSONField(serialize=false)
    	private String dname;
    	public Integer getEmpno() {
    		return empno;
    	}
    	public String getEname() {
    		return ename;
    	}
    	public String getJob() {
    		return job;
    	}
    	public Date getHiredata() {
    		return hiredata;
    	}
    	public Float getSalary() {
    		return salary;
    	}
    	public String getDname() {
    		return dname;
    	}
    	public void setEmpno(Integer empno) {
    		this.empno = empno;
    	}
    	public void setEname(String ename) {
    		this.ename = ename;
    	}
    	public void setJob(String job) {
    		this.job = job;
    	}
    	public void setHiredata(Date hiredata) {
    		this.hiredata = hiredata;
    	}
    	public void setSalary(Float salary) {
    		this.salary = salary;
    	}
    	public void setDname(String dname) {
    		this.dname = dname;
    	}
    	
    }

JSON和对象之间互转

FastJsonExample.java

复制代码
    package com.bayar.employee;
    
    import java.util.Calendar;
    
    import com.alibaba.fastjson.JSON;
    
    public class FastJSONexample {
    	public static void main(String[] args) {
    		Employee employee = new Employee();
    		employee.setEmpno(10000);
    		employee.setEname("Bayar");
    		employee.setJob("Front-End");
    		employee.setDname("Techno");
    		Calendar c = Calendar.getInstance();
    		c.set(2021, 7, 20, 18, 42);
    		employee.setHiredata(c.getTime());
    		//FastJSON中提供了JSON对象,完成对象与JSON字符串的互相转换
    		String json = JSON.toJSONString(employee);
    		System.out.println(json);
    		//JSON字符串转对象
    		Employee emp = JSON.parseObject(json, Employee.class);
    		System.out.println(emp.getEname());
    	}
    }
FastJSON中对象数组序列化与反序列化

操作列表

复制代码
    package com.bayar.employee;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import com.alibaba.fastjson.JSON;
    
    public class FastJSONExample2 {
    	public static void main(String[] args) {
    		List empList = new ArrayList();
    		for(int i = 0;i<=100;i++) {
    			Employee emp = new Employee();
    			emp.setEmpno(1000+i);
    			emp.setEname("员工"+i);
    			empList.add(emp);
    		}
    		//toJSONString即可操作单一对象,也可操作列表
    		String json = JSON.toJSONString(empList);
    		System.out.println(json);
    		//JSON转成对象数组
    		List<Employee> emps = JSON.parseArray(json, Employee.class);
    		for (Employee employee : emps) {
    			System.out.println(employee.getEmpno()+":"+employee.getEname());
    		}
    	}
    }

全部评论 (0)

还没有任何评论哟~