JSON解析

 

一、什么是JSON

1.1、JSON是一种轻量级的数据交换格式。易于人阅读和编写。被广泛应用与WEB应用开发。

1.2、JSON的语法:

         { }:代表对象,对象由键值对组成。eg:{“name”:”小明” ,”age”:18}  第一个键为name,值为小明,第为键为age,值为18。键值对之间用逗号分开。

         []:代表对象数组。由多个对象组成。eg:[{“name”:”小明” ,”age”:18},{“name”:”小李” ,”age”:12}] 这个对象数组中包含两个对象。对象内的内容同上,对象之间用逗号分开。


 

  • JSON解析:

以下三种方式都需要导入第三方jar包。JAR包下载地址。

解析所涉及到的类:

public class Student {
	private String name;
	private int id;
	private int age;
	private Grade grade;
	
	public Student(String name, int id, int age, Grade grade) {
		super();
		this.name = name;
		this.id = id;
		this.age = age;
		this.grade = grade;
	}


	public Student() {
		super();
	}




	public Grade getGrade() {
		return grade;
	}


	public void setGrade(Grade grade) {
		this.grade = grade;
	}


	public String getName() {
		return name;
	}


	public void setName(String name) {
		this.name = name;
	}


	public int getId() {
		return id;
	}


	public void setId(int id) {
		this.id = id;
	}


	public int getAge() {
		return age;
	}


	public void setAge(int age) {
		this.age = age;
	}
	
}



public class Grade {
	//班级名
	private String className;
	//班级类型
	private String type;
	public Grade() {
		super();
	}
	public Grade(String className, String type) {
		super();
		this.className = className;
		this.type = type;
	}
	
	public String getClassName() {
		return className;
	}
	public void setClassName(String className) {
		this.className = className;
	}
	public String getType() {
		return type;
	}
	public void setType(String type) {
		this.type = type;
	}
}

 

2.1、传统的官方解析。

public class demo01 {
	public static void main(String[] args) throws Exception{
		// 将json字符串转化为json对象
		test01();
		//将json对象数组转化为json对象
		test02();
		//将java对象转化为json字符串
		test03();
		//将java对象数组转化为json对象数组字符串
		test04();
	}
	
	/***
	 * 将json字符串转化为json对象
	 * @throws Exception 
	 */
	public static void test01() throws Exception {
		//创建json字符串
		String str= "{'name':'小明','id':1,'age':18,'grade':{'className':'一班','type':'优秀班级'}}";
		//将字符串转为json对象
		JSONObject jsonObject=new JSONObject(str);
		//获取对象信息
		System.out.println("id:"+jsonObject.getInt("id"));
		System.out.println("姓名:"+jsonObject.getString("name"));
		System.out.println("年龄:"+jsonObject.getInt("age"));
		System.out.println("班级信息:"+jsonObject.getJSONObject("grade"));//该步获得的是对象内grade对象的信息
		
		//获取对象内grade对象
		JSONObject jsonObject2=jsonObject.getJSONObject("grade");
		System.out.println("班级名称:"+jsonObject2.getString("className"));
		System.out.println("班级类型:"+jsonObject2.getString("type"));
		
		/*
		执行结果:

		id:1
		姓名:小明
		年龄:18
		班级信息:{"className":"一班","type":"优秀班级"}
		班级名称:一班
		班级类型:优秀班级
		
		*/
		
	}
	
	
	/***
	 * 将json对象数组转化为json对象
	 */
	public static void test02() throws Exception{
		//创建json对象数组字符串
		String str= "[{'name':'小明','id':1,'age':18},{'name':'小李','id':2,'age':12}]";
		//将字符串转化为对象数组
		JSONArray jsonArray=new JSONArray(str);
		//遍历数组
		for(int i=0;i<jsonArray.length();i++) {
			//提取出对象
			JSONObject jsonObject=jsonArray.getJSONObject(i);
			System.out.println("姓名:"+jsonObject.getString("name")+",年龄:"+jsonObject.getInt("age"));
		
		}
		
		/*
		执行结果:
		
		姓名:小明,年龄:18
		姓名:小李,年龄:12
		*/
	}
	
	
	/***
	 * 将java对象转化为json字符串
	 */
	public static void test03() {
		Student student=new Student("小花",03,18,null);
		JSONObject jsonObject=new JSONObject(student);
		System.out.println(jsonObject.toString());
		
		/*
		执行结果:
		
		{"name":"小花","id":3,"age":18}
		*/
	}
	
	/***
	 * 将java对象数组转化为json对象数组字符串
	 */
	public static void test04() {
		List<Student> list=new ArrayList<>();
		list.add(new Student("小明",1,18,null));
		list.add(new Student("小李",2,12,null));
		JSONArray jsonArray=new JSONArray(list);
		System.out.println(jsonArray.toString());
		/*
		执行结果:
		
		[{"name":"小明","id":1,"age":18},{"name":"小李","id":2,"age":12}]
		*/
	}

}

2.2、利用google的Gson解析

public class GsonTest {
	public static void main(String[] args) {
		//利用GSON将json字符串转为java对象   字符串属性要与java对象一致
		testGson01();
		//利用Gson将字符串转化为对象   字符串中对象还包含对象
		testGson02();
		//利用Gson将json对象数组转化为java对象、
		testGson03();
		//利用Gson将java对象转化为json字符串
		testGosn04();
		//利用Gson将java对象数组转化为json字符串
		testGson05();
	}
	
	
	/***
	 * 利用GSON将json字符串转为java对象   字符串属性要与java对象一致
	 */
	public static void testGson01() {
		//创建json对象   属性要与java对象的属性一致   位置顺序不要求
		String str="{'name':'小明','id':1,'age':18}";
		//创建Gson对象
		Gson gson=new Gson();
		//同过gson转化获取对象
		Student student=gson.fromJson(str, Student.class);
		System.out.println("id:"+student.getId()+",姓名:"+student.getName()+",年龄:"+student.getAge());
		
		/*
		执行结果:
		id:1,姓名:小明,年龄:18
		*/
	}
	
	/***
	 * 利用Gson将字符串转化为对象   字符串中对象还包含对象
	 */
	public static void testGson02() {
		//创建json字符串  包含grade对象
		String str="{'name':'小明','id':1,'age':18,'grade':{'className':'一班','type':'优秀班级'}}";
		Gson gson=new Gson();
		Student student=gson.fromJson(str, Student.class);
		System.out.println("id:"+student.getId()+",姓名:"+student.getName()+",年龄:"+student.getAge());
		//获取grade的信息
		System.out.println("班级:"+student.getGrade().getClassName()+",班级类型:"+student.getGrade().getType());
		/*
		执行结果:
		
		id:1,姓名:小明,年龄:18
		班级:一班,班级类型:优秀班级
		*/
	}
	
	/**
	 * 利用Gson将json对象数组转化为java对象、
	 */
	public static void testGson03() {
		String str="[{'name':'小明','id':1,'age':18},{'name':'小李','id':2,'age':12}]";
		Gson gson=new Gson();
		//用google的类型转化器转化类型
		TypeToken<List<Student>> token=new TypeToken<List<Student>>(){};
		List<Student> list=gson.fromJson(str, token.getType());
		for (Student student : list) {
			System.out.println("id:"+student.getId()+",姓名:"+student.getName()+",年龄:"+student.getAge());
		}
		/*
		执行结果:
		id:1,姓名:小明,年龄:18
		id:2,姓名:小李,年龄:12
		*/
	}
	
	/**
	 * 利用Gson将java对象转化为json字符串
	 */
	public static void testGosn04(){
		Student student=new Student("小明",1,18,null);
		Gson gson=new Gson();
		String str=gson.toJson(student);//转化为字符串
		System.out.println(str);
		/*
		执行结果:
		{"name":"小明","id":1,"age":18}
		*/
	}
	
	/***
	 * 利用Gson将java对象数组转化为json字符串
	 */
	public static void testGson05() {
		List<Student> list=new ArrayList<>();
		list.add(new Student("小明",1,18,null));
		list.add(new Student("小李",2,12,null));
		Gson gson=new Gson();
		String str=gson.toJson(list);
		System.out.println(str);
		/*
		执行结果:
		[{"name":"小明","id":1,"age":18},{"name":"小李","id":2,"age":12}]
		*/
	}	
	
}

2.3、利用阿里巴巴的Fastjson解析


public class TestFastjson {
	public static void main(String[] args) {
		// 将json字符串转化为java对象
		test01();
		//将java对象转化为json字符串
		test02();
		//将json对象数组转化为java对象
		test03();
	}
	
	
	/***
	 * 将json字符串转化为java对象
	 */
	public static void test01() {
		String str="{'name':'小明','id':1,'age':18}";
		//将json字符串转化为java对象
		Student student=JSON.parseObject(str,Student.class);
		System.out.println("id:"+student.getId()+",姓名:"+student.getName()+",年龄:"+student.getAge());
		/*
		执行结果:
		id:1,姓名:小明,年龄:18
		*/
		
		//还可将json字符串转化为json对象
		JSONObject jsonObject=JSONObject.parseObject(str);
		System.out.println(jsonObject.getString("name"));
	}
	
	
	/***
	 * 将java对象转化为json字符串
	 */
	public static void test02() {
		Student student=new Student("小明",1,18,null);
		String json=JSON.toJSONString(student);
		System.out.println(json);
		/*
		执行结果:
		{"age":18,"id":1,"name":"小明"}
		*/
	}
	
	
	/***
	 * 将json对象数组转化为java对象
	 */
	public static void test03(){
		String str="[{'name':'小明','id':1,'age':18},{'name':'小李','id':2,'age':12}]";
		List<Student> list=JSON.parseArray(str, Student.class);
		for (Student student : list) {
			System.out.println("id:"+student.getId()+",姓名:"+student.getName()+",年龄:"+student.getAge());
		}
		/*
		执行结果:
		id:1,姓名:小明,年龄:18
		id:2,姓名:小李,年龄:12
		*/
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值