JSON详解

JSON详解

JSON 语法规则

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

举个简单的例子

{
	"site:"[
    	{
       	 	"name":"百度",
        	"url":"www.baidu.com" 
    	},
    	{
         	"name":"网易",
        	"url":"www.163.com" 
    	}
	]
}

JSON与字符串之间的转换


<script type="text/javascript">
	var str="{\"class_name\":\"五年级三班\"}";//注意转义符和字符串的格式
	var json= JSON.parse(str);//将字符串转换为JSON对象
</script>
<script type="text/javascript">
	var json={"class_name":"五年级三班"};
	var str=JSON.stringify(json);//将JSON转换为字符串
</script>

JSON与JAVA的交互

Java的JSON工具包有许多,例如:FastJson、Jackson、Gson、Json-lib…

FastJson JSON序列化 与 反序列工具包

下载地址:网页中有详细的介绍FastJson
下载后直接复制到WebContent/WEB-INF/lib 即可

下面举一个简单的例子

Employee类(JavaBean)
package com.json;

import java.util.Date;

import com.alibaba.fastjson.annotation.JSONField;

public class Employee {
	private Integer empno;//员工编号
	private String ename;//员工姓名
	private String job;//岗位
	@JSONField ( name="hiredate" ,format= "yyyy-MM-dd") 
	//格式化时间的key值和value值
	private Date hdate;//入职时间
	private Float salary;//薪资
	@JSONField (serialize = false )
	//序列化跳过dname属性
	private String dname;//部门名称
	
	//getters和setters方法
	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;
	}
	@Override
	public String toString() {
		return "Employee [empno=" + empno + ", ename=" + ename + ", job=" + job + ", hdate=" + hdate + ", salary="
				+ salary + ", dname=" + dname + "]";
	}
	
	
}

注意一下@JSONField 映射 的作用

实现类1

package com.json;

import java.util.Calendar;

import com.alibaba.fastjson.JSON;

public class FastJsonSample1 {
	public static void main(String[] args) {
		Employee emp = new Employee();
		emp.setEmpno(5555);
		emp.setEname("陈某人");
		emp.setJob("客户经理");
		emp.setSalary(10000f);
		emp.setDname("市场部");
		Calendar c=Calendar.getInstance();
//Calendar 是一个抽象类, 无法通过直接实例化得到对象. 
//因此, Calendar 提供了一个方法 getInstance,来获得一个Calendar对象, 得到的 Calendar 由当前时间初始化
		c.set(2021, 0, 30, 0, 0, 0);//月份从0开始
		emp.setHdate(c.getTime());
		//FastJson中提供了JSON对象,完成对象与JSON字符串的互相转换
		String json=JSON.toJSONString(emp);//对象序列化
		System.out.println(json);
		Employee employee=JSON.parseObject(json,Employee.class);//对象反序列化
		System.out.println(employee);
	}
}

在这里插入图片描述

实现类2

package com.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 emp=new Employee();
			emp.setEmpno(5555+i);
			emp.setEname("员工"+i);
			emplist.add(emp);
		}
		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());
		}
	}
}

在这里插入图片描述
很简单的小例子,数据传送和数据保存很实用的一个方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值