一.JSON簡介:
1.JSON(javaScript Object Notation)是一種輕量級的數(shù)據(jù)交換格式;
2.JSON數(shù)據(jù)作為目前網(wǎng)絡(luò)中主流的數(shù)據(jù)傳輸格式之一,應用十分廣泛;
3.JSON可以表示的數(shù)據(jù):
(1)對象:對象表示為”{}”擴起來的內(nèi)容,數(shù)據(jù)結(jié)構(gòu)為{key:value,key:value,....}的鍵值對的結(jié)構(gòu)
例如:
{“name”:”zhangsan”,”age”:20}
(2)數(shù)組:數(shù)組表示為中括號” [ ]”括起來的內(nèi)容,數(shù)據(jù)結(jié)構(gòu)為[value,value,value,.........]或[{key:value,...},{key:value,...}]的單值結(jié)構(gòu)
例如:
[{“name”:”zhangsan”,”age”:20},{“name”:”wangwu”,”age”:25}]
即:
{
“user”:
[
{“name”:”zhangsan”,”age”:20},
{“name”:”wangwu”,”age”:25}
]
}
二.JSON的官方解析
1.把裝配好的JavaBean轉(zhuǎn)換成JSON數(shù)據(jù)格式
2.把JSON轉(zhuǎn)化成JavaBean對象
3.把集合轉(zhuǎn)化為JSON字符串
4.把數(shù)組形式的JSON字符串轉(zhuǎn)化為集合對象
例1(JSON官方解析):
(1)先引入所需jar包
(2)編寫代碼:
轉(zhuǎn)化工具類(包含了4中轉(zhuǎn)換的方法):
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對象轉(zhuǎn)換成JSON數(shù)據(jù)格式public static String javaToJSON() {Student stu = new Student(1, "王昭君", 89.5);JSONObject jsonObj = new JSONObject(stu);return jsonObj.toString();}// 2.將JSON轉(zhuǎn)化為JavaBean對象public static Student jsonToJavaBean() {Student stu = null;String jsonStr = "{'id':2,'name':'楊玉環(huán)','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. 把集合轉(zhuǎn)化為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.把數(shù)組形式的JSON串轉(zhuǎn)化為集合對象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轉(zhuǎn)化為JSON數(shù)據(jù)格式String jsonStr= OfficeJSONUtil.javaToJSON();System.out.println("1.JavaBean轉(zhuǎn)化為JSON數(shù)據(jù)格式:"+jsonStr);// 2.將JSON轉(zhuǎn)化為JavaBean對象Student stu=OfficeJSONUtil.jsonToJavaBean();System.out.println("2.將JSON轉(zhuǎn)化為JavaBean對象:"+stu);// 3. 把集合轉(zhuǎn)化為JSON字符串String jsonStr1=OfficeJSONUtil.listToJSON();System.out.println("3. 把集合轉(zhuǎn)化為JSON字符串:"+jsonStr1);//4.把數(shù)組形式的JSON串轉(zhuǎn)化為集合對象List<Student> list=OfficeJSONUtil.jsonArrayToList();System.out.println("4.把數(shù)組形式的JSON串轉(zhuǎn)化為集合對象:");for(Student stu1:list){System.out.println(stu1);}}}
運行結(jié)果:
三.使用GSON(Google第三方包)解析JSON
首先實例化GSON對象:
1.把Java對象轉(zhuǎn)化為JSON
2.把JSON轉(zhuǎn)化為Java對象
3.把集合類型的Java對象轉(zhuǎn)換成JSON
4.把JSON轉(zhuǎn)換成集合類型的Java集合對象
例2(使用GSON解析JSON):
(1)引入第三方j(luò)ar包
(2)編寫代碼:
解析工具類(包含四種轉(zhuǎn)換方法):
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轉(zhuǎn)換成JSON格式public static String javaBeanToJSON() {Student stu = new Student(9, "鐘無艷", 69.7);String jsonStr = gson.toJson(stu);return jsonStr;}// 2.將JSON轉(zhuǎn)化為Java對象public static Student jsonToJavaBean() {Student stu = gson.fromJson("{\"id\":10,\"name\":\"武則天\",\"score\":94.7}", Student.class);return stu;}//3.把集合類型的Java對象轉(zhuǎn)換成JSONpublic 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轉(zhuǎn)換成集合類型的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轉(zhuǎn)換成JSON格式String jsonStr= GSONUtilt.javaBeanToJSON();System.out.println("1.將javaBean轉(zhuǎn)換成JSON格式"+jsonStr);// 2.將JSON轉(zhuǎn)化為Java對象Student stu= GSONUtilt.jsonToJavaBean();System.out.println("2.將JSON轉(zhuǎn)化為Java對象"+stu);//3.把集合類型的Java對象轉(zhuǎn)換成JSONString jsonStr1= GSONUtilt.listToJSON();System.out.println("3.把集合類型的Java對象轉(zhuǎn)換成JSON"+jsonStr1);//4.把JSON轉(zhuǎn)換成集合類型的Java集合對象System.out.println("4.把JSON轉(zhuǎn)換成集合類型的Java集合對象");List<Student> list=GSONUtilt.jsonToList();for(Student stu1:list){System.out.println(stu1);}}}
運行結(jié)果:
四.FsatJSON(阿里巴巴第三方包)解析JSON
1.把Javabean轉(zhuǎn)換成JSON
2.把JSON轉(zhuǎn)換成Javabean
3.把集合對象轉(zhuǎn)換成JSON
4.把數(shù)組形式的JSON轉(zhuǎn)換成集合對象
例3(利用FastJSON解析JSON):
(1)引入相應的jar包
(2)編寫代碼:
接析工具類(包含四種類型轉(zhuǎn)換的方法):
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轉(zhuǎn)換成JSONpublic static String javaBeanToJSON() {Student stu = new Student(11, "虞姬", 96.8);return JSON.toJSONString(stu);}// 2.把JSON轉(zhuǎn)換成Javabeanpublic static Student jsonToJavaBean() {String jsonStr = "{'id':2,'name':'楊玉環(huán)','score':95.6}";return JSON.parseObject(jsonStr, Student.class);}// 3.把集合對象轉(zhuǎn)換成JSONpublic 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.把數(shù)組形式的JSON轉(zhuǎn)換成集合對象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轉(zhuǎn)換成JSONString jsonStr= FastJSONUtil.javaBeanToJSON();System.out.println("1.把Javabean轉(zhuǎn)換成JSON:"+jsonStr);// 2.把JSON轉(zhuǎn)換成JavabeanStudent stu=FastJSONUtil.jsonToJavaBean();System.out.println("2.把JSON轉(zhuǎn)換成Javabean:"+stu);// 3.把集合對象轉(zhuǎn)換成JSONString jsonArrStr=FastJSONUtil.listToJSON();System.out.println("3.把集合對象轉(zhuǎn)換成JSON:"+jsonArrStr);// 4.把數(shù)組形式的JSON轉(zhuǎn)換成集合對象System.out.println("4.把數(shù)組形式的JSON轉(zhuǎn)換成集合對象:");List<Student> list=FastJSONUtil.jsonToList();for(Student stu1:list){System.out.println(stu1);}}}
運行結(jié)果:
轉(zhuǎn)載于:https://blog.51cto.com/13501268/2129213
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖
總結(jié)
以上是生活随笔為你收集整理的Java学习总结(二十)——JSON解析:官方解析,GSON解析,FastJSON解析,的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。