Json入门 学习

导学

针对于各位同学,在前端课程中已经学习过Json,所以本章主要讲解Json与Java的交互。

Json语法

JavaScript Object Notation(JavaScript对象表示法),JSON是轻量级的文本数据交互格式,JSON独立于语言,具有自我描述性,更易于理解逐渐替代了xml。
JSON语法规则:

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

JS中JSON对象和JSON字符串的转换

在数据传输中,JSON是以字符串形式传递的,而JS操作的是JSON对象

  • JSON.stringify方法是用于将一个值转为字符串。该字符串符合 JSON 格式要求,并且可以通过JSON.parse方法还原。
  • JSON.parse方法将 JSON 字符串转化为对象。
var jsonStr = '{"name":"Lisa","password":"123"}';
var jsonObj = {"name":"Lisa","password":"123"};

//String转化为JSON对象
var jsonObject = JSON.parse(jsonStr);

//将对象转回字符串
var jsonstr = JSON.stringify(jsonObject);

JSON与Java进行交互

我们可以借助工具包,使Json和Java对象之间实现相互的转换,常用Java的JSON工具包有FastJson(阿里巴巴开发),Jackson ,Gson, Json-lib等。
FastJson是阿里巴巴著名的JSON序列化与反序列工具包,FastJson国内拥有大量的使用者,拥有API简单 效率高等优点。
Fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。 总之就是提供了对象与JSON 之间的转换。
该工具包可以通过著名的开源平台https://github.com找到。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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")
	//通过FastJson包中设置的注解,设置输出内容的名称和格式
	@JSONField(name = "hiredate" , format="yyyy-MM-dd")
	private Date hdate;
	private Float salary;
	@JSONField(serialize = false)//设置是否转换该字段
	private String 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;
	}
	
	
}
import java.util.Calendar;

import com.alibaba.fastjson.JSON;

public class FastJsonSample1 {
	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());
		//FastJSON中提供了JSON对象,完成对象与JSON字符串的互相转换
		String json = JSON.toJSONString(employee);
		System.out.println(json);
		Employee emp = JSON.parseObject(json, Employee.class);
		System.out.println(emp.getEname());
	}
}

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

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);
		}
		String json = JSON.toJSONString(emplist);
		System.out.println(json);
		List<Employee> emps = JSON.parseArray(json , Employee.class);
		for(Employee e : emps) {
			System.out.println(e.getEmpno() + ":" + e.getEname());
		}
	}
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值