一.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);
}
}
}
运行结果: