一.JSON简介: 1.JSON(javaScript Object Notation)是一种轻量级的数据交换格式; 2.JSON数据作为目前网络中主流的数据传输格式之一,应用十分广泛; 3.JSON可以表示的数据: (1)对象:对象表示为”{}”扩起来的内容,数据结构为{key:value,key:value,....}的键值对的结构 例如: {“name”:”zhangsan”,”age”:20} (2)数组:数组表示为中括号” [ ]”括起来的内容,数据结构为[value,value,value,.........]或[{key:value,...},{key:value,...}]的单值结构 例如: [{“name”:”zhangsan”,”age”:20},{“name”:”wangwu”,”age”:25}] 即:

	{
“user”:
[
{“name”:”zhangsan”,”age”:20},
{“name”:”wangwu”,”age”:25}
]
}

二.JSON的官方解析 1.把装配好的JavaBean转换成JSON数据格式

2.把JSON转化成JavaBean对象

3.把集合转化为JSON字符串

4.把数组形式的JSON字符串转化为集合对象

例1(JSON官方解析): (1)先引入所需jar包 (2)编写代码: 转化工具类(包含了4中转换的方法):

package org.json.official;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.json.bean.Student;

public class OfficeJSONUtil {

	// 1.将java对象转换成JSON数据格式
	public static String javaToJSON() {
		Student stu = new Student(1, "王昭君", 89.5);
		JSONObject jsonObj = new JSONObject(stu);
		return jsonObj.toString();
	}

	// 2.将JSON转化为JavaBean对象
	public static Student jsonToJavaBean() {
		Student stu = null;
		String jsonStr = "{'id':2,'name':'杨玉环','score':95.6}";
		try {
			JSONObject jsonObj = new JSONObject(jsonStr);
			int id = jsonObj.optInt("id");
			String name = jsonObj.optString("name");
			double score = jsonObj.optDouble("score");
			stu = new Student(id, name, score);
		} catch (JSONException e) {
			e.printStackTrace();
		}
		return stu;
	}

	// 3. 把集合转化为JSON字符串
	public static String listToJSON() {
		List<Student> list = new ArrayList<Student>();
		Collections.addAll(list, new Student(3, "西施", 93.6), new Student(4,
				"貂蝉", 95.3), new Student(5, "平昭阳公主", 94.6));
		JSONArray jsonArr = new JSONArray(list);
		return jsonArr.toString();

	}

	// 4.把数组形式的JSON串转化为集合对象
	public static List<Student> jsonArrayToList() {
		List<Student> list = new ArrayList<Student>();
		String jsonStr ="[{\"score\":93.6,\"name\":\"西施\",\"id\":3},{\"score\":95.3,\"name\":\"貂蝉\",\"id\":4},{\"score\":94.6,\"name\":\"平昭阳公主\",\"id\":5}]";
		try {
			JSONArray jsonArr=new JSONArray(jsonStr);
			for(int i=0;i<jsonArr.length();i++){
				JSONObject jsonObj=jsonArr.optJSONObject(i); //用于获取每一个对象
				int id=jsonObj.optInt("id");
				String name=jsonObj.optString("name");
				double score=jsonObj.optDouble("score");
				Student stu=new Student(id,name,score);
				list.add(stu);
			}
		} catch (JSONException e) {
			e.printStackTrace();
		}
		return list;

	}
}

测试代码(主方法):

package org.json.official;

import java.util.List;
import org.json.bean.Student;

public class TestOfJson {

	public static void main(String[] args) {
		//1.JavaBean转化为JSON数据格式
		String jsonStr= OfficeJSONUtil.javaToJSON();
		System.out.println("1.JavaBean转化为JSON数据格式:"+jsonStr);
		
		// 2.将JSON转化为JavaBean对象
		Student stu=OfficeJSONUtil.jsonToJavaBean();
		System.out.println("2.将JSON转化为JavaBean对象:"+stu);
		
		// 3. 把集合转化为JSON字符串
		String jsonStr1=OfficeJSONUtil.listToJSON();
		System.out.println("3. 把集合转化为JSON字符串:"+jsonStr1);
		
		//4.把数组形式的JSON串转化为集合对象
		List<Student> list=OfficeJSONUtil.jsonArrayToList();
		System.out.println("4.把数组形式的JSON串转化为集合对象:");
		for(Student stu1:list){
			System.out.println(stu1);
		}
	}

}

运行结果:

三.使用GSON(Google第三方包)解析JSON 首先实例化GSON对象:

1.把Java对象转化为JSON

2.把JSON转化为Java对象

3.把集合类型的Java对象转换成JSON

4.把JSON转换成集合类型的Java集合对象

例2(使用GSON解析JSON): (1)引入第三方jar包 (2)编写代码: 解析工具类(包含四种转换方法):

package org.json.gson;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.json.bean.Student;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

public class GSONUtilt {
	private static Gson gson = new Gson();// 实例化Gson对象

	// 1.将javaBean转换成JSON格式
	public static String javaBeanToJSON() {
		Student stu = new Student(9, "钟无艳", 69.7);
		String jsonStr = gson.toJson(stu);
		return jsonStr;
	}

	// 2.将JSON转化为Java对象
	public static Student jsonToJavaBean() {
		Student stu = gson.fromJson(
				"{\"id\":10,\"name\":\"武则天\",\"score\":94.7}", Student.class);
		return stu;
	}
	
	//3.把集合类型的Java对象转换成JSON
	public static String listToJSON(){
		List<Student> list=new ArrayList<Student>();
		Collections.addAll(list, new Student(3, "西施", 93.6), new Student(4,
				"貂蝉", 95.3), new Student(5, "平昭阳公主", 94.6));
		return gson.toJson(list);
		
	}
		
	//4.把JSON转换成集合类型的Java集合对象
	public static List<Student> jsonToList(){
		String jsonStr="[{\"id\":20,\"name\":\"郭靖\",\"score\":60.5},{\"id\":21,\"name\":\"黄蓉\",\"score\":65.5}]";
		return gson.fromJson(jsonStr, new TypeToken<List<Student>>(){}.getType());
		
	}
}

测试类(主方法):

package org.json.gson;

import java.util.List;
import org.json.bean.Student;

public class testGoJson {

	public static void main(String[] args) {
		// 1.将javaBean转换成JSON格式
		String jsonStr= GSONUtilt.javaBeanToJSON();
		System.out.println("1.将javaBean转换成JSON格式"+jsonStr);
		
		// 2.将JSON转化为Java对象
		Student stu= GSONUtilt.jsonToJavaBean();
		System.out.println("2.将JSON转化为Java对象"+stu);
		
		//3.把集合类型的Java对象转换成JSON
		String jsonStr1= GSONUtilt.listToJSON();
		System.out.println("3.把集合类型的Java对象转换成JSON"+jsonStr1);
		
		//4.把JSON转换成集合类型的Java集合对象
		System.out.println("4.把JSON转换成集合类型的Java集合对象");
		List<Student> list=GSONUtilt.jsonToList();
		for(Student stu1:list){
			System.out.println(stu1);
		}
	}

}

运行结果:

四.FsatJSON(阿里巴巴第三方包)解析JSON 1.把Javabean转换成JSON

2.把JSON转换成Javabean

3.把集合对象转换成JSON

4.把数组形式的JSON转换成集合对象

例3(利用FastJSON解析JSON): (1)引入相应的jar包 (2)编写代码: 接析工具类(包含四种类型转换的方法):

package org.json.fastjson;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.json.bean.Student;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;

public class FastJSONUtil {

	// 1.把Javabean转换成JSON
	public static String javaBeanToJSON() {
		Student stu = new Student(11, "虞姬", 96.8);
		return JSON.toJSONString(stu);

	}

	// 2.把JSON转换成Javabean
	public static Student jsonToJavaBean() {
		String jsonStr = "{'id':2,'name':'杨玉环','score':95.6}";
		return JSON.parseObject(jsonStr, Student.class);
	}

	// 3.把集合对象转换成JSON
	public static String listToJSON() {
		List<Student> list = new ArrayList<Student>();
		Collections.addAll(list, new Student(3, "西施", 93.6), new Student(4,
				"貂蝉", 95.3), new Student(5, "平昭阳公主", 94.6));
		return JSON.toJSONString(list);

	}

	// 4.把数组形式的JSON转换成集合对象
	public static List<Student> jsonToList() {
		String JSONStr = "[{\"id\":20,\"name\":\"郭靖\",\"score\":60.5},{\"id\":21,\"name\":\"黄蓉\",\"score\":65.5}]";
		return JSON.parseObject(JSONStr, new TypeReference<List<Student>>() {
		});

	}

}

测试类(主方法):

package org.json.fastjson;

import java.util.List;

import org.json.bean.Student;

public class TestFastJSON {

	public static void main(String[] args) {
		
		// 1.把Javabean转换成JSON
		String jsonStr= FastJSONUtil.javaBeanToJSON();
		System.out.println("1.把Javabean转换成JSON:"+jsonStr);
		
		// 2.把JSON转换成Javabean
		Student stu=FastJSONUtil.jsonToJavaBean();
		System.out.println("2.把JSON转换成Javabean:"+stu);
		
		// 3.把集合对象转换成JSON
		String jsonArrStr=FastJSONUtil.listToJSON();
		System.out.println("3.把集合对象转换成JSON:"+jsonArrStr);
		
		// 4.把数组形式的JSON转换成集合对象
		System.out.println("4.把数组形式的JSON转换成集合对象:");
		List<Student> list=FastJSONUtil.jsonToList();
		for(Student stu1:list){
			System.out.println(stu1);
		}
	}

}

运行结果: