日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Json、Gson、FAST-JSON解析学习

發布時間:2025/4/5 javascript 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Json、Gson、FAST-JSON解析学习 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Json

JavaScript Object Notation javascript表示對象的一種方式
基于JavaScript語言的輕量級的數據交換格式;即:用來傳輸數據的一種格式.不管是web應用,還是android應用,現在傳輸數據的方式更多是采用json的格式。我們來對比下json同XML的差別

Android也已經內置了對json解析的支持,所以不需要導入jar包。
需要的jar包:
兩個類:

  • 當json字符串以”{“開始,用JSONObject解析
  • 當json字符串以”[“開始,用JSONArray解析

JSONObject
|–getString(String key)根據鍵找到對應該的值
|–getInt(String key) 得到int類型的值
|–getJSONObject(String key)得到JSONObject
|–put(String key,String/Boolean/Object^^)
構造方法
|–new JSONObject(String source) 把對應的String類型的JSON數據轉成JSON的對象
|–new JSONObject(Object bean) 將bean對象轉成Json對象,用于轉成json字符串

JSONArray|--getJSONObject(int index);|--length() 構造方法|--new JSONArray(Collection list)|--new JSONArray(String jStr)特點{}----遇到{}用JSONObject[]----遇到[]用JSONArray解析用帶參構造創建對象組裝用空參構造創建對象

下面用一個Demo來演示下Json解析

車類

public class Car {private String brand; //車型private String color;//車的顏色private int price; //車的價錢public Car(String brand, String color, int price) { //有參構造super();this.brand = brand;this.color = color;this.price = price;}public Car() {//無參構造super();// TODO Auto-generated constructor stub}public String getBrand() {return brand;}public void setBrand(String brand) {this.brand = brand;}public String getColor() {return color;}public void setColor(String color) {this.color = color;}public int getPrice() {return price;}public void setPrice(int price) {this.price = price;}@Overridepublic String toString() { //重寫toStringreturn "Car [brand=" + brand + ", color=" + color + ", price=" + price+ "]";}}

車展的類

import java.util.List;public class ShowObj {private String address;//車展的地址private String time; //車展示的時間private List<Car> carList; //車展中的眾多車的集合public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public String getTime() {return time;}public void setTime(String time) {this.time = time;}public List<Car> getCarList() {return carList;}public void setCarList(List<Car> carList) {this.carList = carList;}@Overridepublic String toString() {return "ShowObj [address=" + address + ", time=" + time + ", carList="+ carList + "]";}} import java.util.ArrayList; import java.util.List; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject;//new Car("寶馬","150","red"); /** json字符串:* 1.表示對象* {brand:'寶馬',color:'red',price:150}* 2.表示數組* [{brand:'寶馬',color:'red',price:150},{brand:'路虎',color:'black',price:180},{brand:'法拉利',color:'yellow',price:200}]* * 3.表示復雜的對象* Engine engine = new Engine("華為","400");* Car car = new Car("寶馬", "red", 150, engine );* * {brand:'寶馬',color:'red',price:150,engine:{company:'華為',horsePower:'400'}}* * 4.表示含有數組或者集合的對象:比如說描述車展:車展的地點,車展的時間,車展的參展車型* {address:'深圳灣體育館',time:'2016-10-1',cars:[{brand:'寶馬',color:'red',price:150},{brand:'路虎',color:'black',price:180},{brand:'法拉利',color:'yellow',price:200}]}* * * 總結:* json對象用{},看見{}就是json對象* json數組[],看見[]就是json對象組成的數組********************************************************* xml:<car><brand>寶馬</brand><color>red</color><price>150</price></car>*jso和xml的區別:----面試*json數據量小,可讀性差。只用于保存數據*xml數據量大,可讀性好。可以用于軟件配置和布局繪制***********************************************************json解析三種:原生解析(最靈活,步驟繁雜)/fastjson/gson()**1.原生解析*步驟:* 導入jar包* 看見{},創建JSONObject對象* 看見[],創建JsonArray對象*** */public class Json2ObjDemo {public static void main(String[] args) throws JSONException {testObject(); //對象的json數據解析testArray(); //數組的Json數據解析testFuZa(); //復雜Json數據解析}// 解析對象 private static void testObject() throws JSONException {String jsonStr = "{brand:'寶馬',price:150,clr:'red'}";// 1.解析簡單對象:參數是要解析的字符串JSONObject jObject = new JSONObject(jsonStr);// 2.解析Car car = new Car();String brand = jObject.getString("brand");car.setBrand(brand);car.setColor(jObject.getString("clr"));car.setPrice(jObject.getInt("price"));System.out.println(car);}}// 解析數組private static void testArray() throws JSONException {String jsonString = "[{brand:'寶馬',color:'red',price:150},{brand:'路虎',color:'black',price:180},{brand:'法拉利',color:'yellow',price:200}]";//這里我們看到以"["開頭那么果斷new一個JSON的數組JSONArray jArray = new JSONArray(jsonString);// System.out.println(jArray.length());List<Car> carList = new ArrayList<>();for (int i = 0; i < jArray.length(); i++) {//通過遍歷獲取每個對象JSONObject jObject = jArray.getJSONObject(i);Car car = new Car();car.setBrand(jObject.getString("brand"));car.setColor(jObject.getString("color"));car.setPrice(jObject.getInt("price"));carList.add(car);//添加到車集}System.out.println(carList);}// 解析含有數組或者集合的對象private static void testFuZa() throws JSONException {/*這個json數據相對復雜 可以看做一個對象中除了自己的普通成員變量外還嵌套了一個Car類型的的集合,從這里的分析我們可以創建好類也就是ShowObj中定義一個Car集的原意*/String jString = "{address:'深圳灣體育館',time:'2016-10-1',cars:[{brand:'寶馬',color:'red',price:150},{brand:'路虎',color:'black',price:180},{brand:'法拉利',color:'yellow',price:200}]}";//將要解析的JSON字符串JSONObject jsonObject = new JSONObject(jString); //看見"{"所以我們new一個JSONObject類ShowObj sObj = new ShowObj(); //創建出車展的對象//將獲取的地址為車站對象初始化sObj.setAddress(jsonObject.getString("address"));//將獲取的車展時間為車站對象初始化sObj.setTime(jsonObject.getString("time"));// 先獲得json數組對象JSONArray jArray = jsonObject.getJSONArray("cars");//這里通過jsonObject獲取一個對象數組接下來就是遍歷這個數組中的每個對象然后獲取每個對象的值List<Car> carList = new ArrayList<>();//創建一個Car集for (int i = 0; i < jArray.length(); i++) {JSONObject jObject = jArray.getJSONObject(i);//獲取的一個JSON對象Car car = new Car();//new一個車car.setBrand(jObject.getString("brand"));//為這個車賦值car.setColor(jObject.getString("color"));//為這個車賦值car.setPrice(jObject.getInt("price"));//為這個車賦值carList.add(car);//每得到一個車就添加到list中}sObj.setCarList(carList);//設置車站的車集屬性//至此一個相對復雜的JSON數據就解析完成了我們打印下結果 //這里主要的思想是觀察JSON數據的結構創建相應類用于保存數據 System.out.println(sObj);}

讀者可能會想這么麻煩竟然JAVA采用面向對象的思想那么有沒有更快捷的工具類為我們提供解析呢? 肯定有 == 下面我們來看看更快速的解析

Gson

public class Car { //車類private String brand; //車型private String color; //車顏色private double price; //車價格private Prduct engine; //車的引擎public Prduct getEngine() {return engine;}public void setEngine(Prduct engine) {this.engine = engine;}public String getBrand() {return brand;}public void setBrand(String brand) {this.brand = brand;}public String getColor() {return color;}public void setColor(String color) {this.color = color;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}public Car(String brand, String color, double price) {super();this.brand = brand;this.color = color;this.price = price;}@Overridepublic String toString() {return "Car [brand=" + brand + ", color=" + color + ", price=" + price+ ", engine=" + engine + "]";}} public class Prduct { //車引擎產地private String company;private String horsePower;public String getCompany() {return company;}public void setCompany(String company) {this.company = company;}public String getHorsePower() {return horsePower;}public void setHorsePower(String horsePower) {this.horsePower = horsePower;}@Overridepublic String toString() {return "Prduct [company=" + company + ", horsePower=" + horsePower+ "]";}} import java.util.List;public class Show {private String address; //車展的地址private String time; //車展時間private List<Car> cars; // 對象名要跟String中一樣public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public String getTime() {return time;}public void setTime(String time) {this.time = time;}public List<Car> getCars() {return cars;}public void setCars(List<Car> cars) {this.cars = cars;}@Overridepublic String toString() {return "Show [address=" + address + ", time=" + time + ", cars=" + cars+ "]";}} import java.util.List;import com.google.gson.Gson; import com.google.gson.reflect.TypeToken;public class goson1 {public static void main(String[] args) {// 解析對象jsonString json = "{brand:'寶馬',color:'red',price:150,engine:{company:'華為',horsePower:'400'}}";Gson gson = new Gson();Car c = gson.fromJson(json, Car.class);System.out.println(c);// 解析數組jsonString json2 = "[{brand:'寶馬',color:'red',price:150},{brand:'路虎',color:'black',price:180},{brand:'法拉利',color:'yellow',price:200}]";TypeToken<List<Car>> typeToken = new TypeToken<List<Car>>() {};List<Car> list = gson.fromJson(json2, typeToken.getType());System.out.println(list);// 混合型 String json3 ="{address:'深圳灣體育館',time:'2016-10-1',cars:[{brand:'寶馬',color:'red',price:150},{brand:'路虎',color:'black',price:180},{brand:'法拉利',color:'yellow',price:200}]}";Show show = gson.fromJson(json3, Show.class);System.out.println(show);}} public static void main(String[] args) {//解析對象jsonString json = "{brand:'寶馬',color:'red',price:150,engine:{company:'華為',horsePower:'400'}}";Gson gson = new Gson();Car c = gson.fromJson(json, Car.class);System.out.println(c);//解析數組jsonString json2 = "[{brand:'寶馬',color:'red',price:150},{brand:'路虎',color:'black',price:180},{brand:'法拉利',color:'yellow',price:200}]";TypeToken<List<Car>> typeToken = new TypeToken<List<Car>>(){};List<Car> list = gson.fromJson(json2, typeToken.getType());System.out.println(list);//混合型String json3 = "{address:'深圳灣體育館',time:'2016-10-1',cars:[{brand:'寶馬',color:'red',price:150},{brand:'路虎',color:'black',price:180},{brand:'法拉利',color:'yellow',price:200}]}";Show show =gson.fromJson(json3, Show.class);System.out.println(show);}

通過以上代碼我們發現Gson的解析異常方便 這里總結下它的用法:

Gson 是 Google 提供的用來在 Java 對象和 JSON 數據之間進行映射的 Java 類庫。可以將一個 JSON 字符串轉成一個 Java 對象,或者反過來。 需要jar包:> **用法:**Gson gson=new Gson()1) fromJson(String json,Class<T>.class)把JSON轉成對應的對象【注意】:類和屬性和json的鍵要對應2) fromJson(String json,new TypeToken<List<Person>>() {}.getType())把JSON轉成集合3) toJson(Object obj) 把任何對象轉成JSON

使用Gson要注意的一點,這里的list集合的車集合對象名一定要和要解析的json數據對應否則list將獲取不到數據比如這里的:

private List<Car> cars ; //對象名要跟String中一樣

FAST-JSON

那么講完JSON GSON解析,下面講解下阿里云提供的API FASTJSON

先看他的方法

Fastjson API入口類是com.alibaba.fastjson.JSON,常用的序列化操作都可以在JSON類上的靜態方法直接完成。// 把JSON文本parse為JavaBean public static final <T> T parseObject(String text, Class<T> clazz); //把JSON文本parse成JavaBean集合 public static final <T> List<T> parseArray(String text, Class<T> clazz);// 將JavaBean序列化為JSON文本 public static final String toJSONString(Object object);

我們發現這里的方法都是靜態的所以我們不需要創建fastjson對象直接類名.方法調用 ,當然它的用法跟Gson累死不夠效率卻高了許多,至于內部實現暫時不研究。。。
具體的用法讀者可自行研究一下。今天的分享就到此~

總結

以上是生活随笔為你收集整理的Json、Gson、FAST-JSON解析学习的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 美女黄色影院 | 综合网在线观看 | 4438成人网| 欧美一区二区激情 | 亚洲网在线观看 | 国产伦精品一区二区三区视频孕妇 | 无套白嫩进入乌克兰美女 | 国产精品99久久久久久动医院 | 久久久精品综合 | 喷潮在线观看 | 永久久久久久 | 亚洲天堂v | 男男play呻吟动漫网站 | 麻豆视频免费在线 | 日本免费网站视频 | 国产色婷婷一区二区三区竹菊影视 | 亚洲成人精品av | 久久精品国产亚洲a | 免费的黄网站 | 亚洲视频综合网 | 成人免费在线播放视频 | 麻豆视频在线播放 | 91精品区| 暖暖av | 91黄色免费看 | 97视频人人 | 午夜福利视频 | 九草视频在线 | eeuss鲁片一区二区三区在线观看 | 日韩中文字幕在线免费观看 | 成人免费毛片网站 | 香蕉传媒 | 精品乱 | 国产制服av | 免费在线观看av的网站 | 中文在线免费看视频 | 男男gay同性三级 | 韩国三级中文字幕hd浴缸戏 | 日日摸日日添日日躁av | 午夜久草| 二区三区视频 | 欧美sese| 波多野结衣福利视频 | 国产成人精品女人久久久 | 午夜极品 | 欧美色图影院 | 欧美91成人网| www.x日本 | 北条麻妃av在线播放 | 日婷婷| 青青草原免费观看 | 在线观看欧美成人 | 欧美自拍偷拍一区二区 | 美丽姑娘免费观看在线观看 | 波多野结衣免费观看视频 | 欧美一级免费黄色片 | 香蕉视频在线免费播放 | 兄弟兄弟全集免费观看 | 亚洲每日更新 | 成人a级网站 | 天天看天天操 | 亚洲天堂男人的天堂 | 青青草国产在线 | 成人精品在线观看 | 日本精品一区二区在线观看 | 九草视频在线 | 欧美熟妇一区二区 | 亚洲性xxx | 国产日产欧洲无码视频 | 日本美女黄视频 | 国内精品国产三级国产aⅴ久 | 无码少妇一区二区三区芒果 | 99精品视频免费看 | 国产又粗又大又长 | 黄色免费视频网站 | 樱桃视频污污 | 国产在线精品一区 | 永久免费av无码网站性色av | 男女一级特黄 | 寻找身体恐怖电影免费播放 | 亚洲黄色免费观看 | 国产欧美日 | 天天操天天操天天干 | 日韩高清一二三区 | 99国产精品久久久久 | 久久视频在线免费观看 | 青青草一区二区三区 | 欧美丰满美乳xxx高潮www | 国产人与zoxxxx另类 | 国产69精品久久久久久久久久 | 波多野结衣在线免费观看视频 | 黑人一区二区三区四区五区 | 在线看av网址 | 亚洲国产精品无码久久久久高潮 | 日韩成人av影院 | 国产美女精品一区二区三区 | 久久综合色综合 | 涩涩小网站| 波多野结衣成人在线 |