亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Java 利用Gson解析Json數據 添加Gson源碼jar包 查看GSON源碼

2019-11-14 23:31:49
字體:
來源:轉載
供稿:網友
java 利用Gson解析Json數據 添加Gson源碼jar包 查看GSON源碼

1.可以利用Android API中的JsonReader解析Json數據

2.可以引入Gson的jar包,結合JavaBean解析Json數據

Bean.java

package com.sphere.json;public class Bean {    /**     * Bean中的數據必須與Json數據中的key鍵值     * 一一對應  名字不可更改、     * name 與json的name鍵值對應     * wife 與json數據中的wife對應     * 否則會出現讀取為null的現象     */    PRivate String name;    private String wife;        public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getWife() {        return wife;    }    public void setWife(String wife) {        this.wife = wife;    }        }
View Code

Gson解析工具類

package com.sphere.json;import java.io.IOException;import java.io.StringReader;import java.lang.reflect.Type;import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.LinkedList;import com.google.gson.Gson;import com.google.gson.reflect.TypeToken;import com.google.gson.stream.JsonReader;public class JsonUtils {    /**     * 使用JsonReader     * @param data     */    public void parseJson(String data){        try {            //創建JsonReader對象            JsonReader reader = new JsonReader(new StringReader(data));            //開始解析數組            reader.beginArray();            while(reader.hasNext()){                //開始解析對象                reader.beginObject();                while(reader.hasNext()){                    //得到鍵                    String tagName = reader.nextName();                    if(tagName.equals("name")){                        System.out.print("name --->"+reader.nextString());                    }                    else if(tagName.equals("wife")){                        System.out.println("    wife --->"+reader.nextString());                    }                }                //解析對象結束                reader.endObject();            }            //解析數組結束            reader.endArray();        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }        //解析json數組  返回list對象    public ArrayList<HashMap<String, String>> parseBeanFromJson(String jsonArray){                //Gson解析Json數組        Type type = new TypeToken<LinkedList<Bean>>(){}.getType();        Gson gson = new Gson();        LinkedList<Bean> beans = gson.fromJson(jsonArray, type);                        ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();        for (Iterator iterator = beans.iterator(); iterator.hasNext();) {            Bean bean = (Bean) iterator.next();            //System.out.print(bean.getName());            //System.out.println(bean.getWife());                        HashMap<String, String> map = new HashMap<String, String>();            map.put("name", bean.getName());            map.put("wife", bean.getWife());            /*添加到list中*/            list.add(map);        }                /*遍歷list*/        int index = 0;        for (Iterator iterator = list.iterator(); iterator.hasNext();) {            HashMap<String, String> hashMap = (HashMap<String, String>) iterator.next();            System.out.println("list中第"+(++index)+"個元素"+hashMap);        }                return list;    }}

測試類Test.java

package com.sphere.json;import com.google.gson.Gson;public class Test {        static String jsonArray = "[{/"name/":/"張無忌/",/"wife/":/"敏敏特穆爾/"},{/"name/":/"楊過/",/"wife/":/"小龍女/"}]";        static String jsonData = "{/"name/":/"張無忌/",/"wife/":/"敏敏特穆爾/"}";            public static void main(String[] args) {        new JsonUtils().parseJson(jsonArray);        System.out.println();                /**********解析Json數據***********/        Gson gson = new Gson();        Bean user = gson.fromJson(jsonData, Bean.class);        System.out.println("我叫"+user.getName()+" 我妻子是"+user.getWife());        System.out.println();                /**********解析Json數組***********/        new JsonUtils().parseBeanFromJson(jsonArray);    }}

輸出結果:

name --->張無忌    wife --->敏敏特穆爾name --->楊過    wife --->小龍女我叫張無忌 我妻子是敏敏特穆爾list中第1個元素{wife=敏敏特穆爾, name=張無忌}list中第2個元素{wife=小龍女, name=楊過}

假設我想跟蹤代碼查看某個gson中函數的具體實現,該如何添加對源碼信息的查看呢。

其實很簡單, 我們先下載gson-2.2.4-sources.jar這個jar包,將其拷貝到libs目錄下。

我們在代碼中使用ctrl + 左鍵 ,點擊某個gson的API函數,如下,我們查看JsonReader這個函數

eclipse跳轉到.class 頁面

我們點擊箭頭所指的按鈕attch source, 如下圖:

因為我們把source.jar拷貝到了工程目錄下 所以這里選擇workspace

選中源碼的jar

點擊確定,就可以在eclipse中查看追蹤gson的源碼了。

//------------------------------------------------------------------------------------

  以下關于gson基本用法示例來自http://www.49028c.com/kunpengit/p/4001680.html

//-------------------------------------------------------------------------------------

(3)bean轉換json

Gson gson = new Gson();String json = gson.toJson(obj);obj是對象

(4)json轉換bean

Gson gson = new Gson();

String json = "{/"id/":/"2/",/"name/":/"Json技術/"}";Book book = gson.fromJson(json, Book.class);

(5)json轉換復雜的bean,比如List,Set將json轉換成復雜類型的bean,需要使用TypeTokenGson gson = new Gson();String json = "[{/"id/":/"1/",/"name/":/"Json技術/"},{/"id/":/"2/",/"name/":/"java技術/"}]";//將json轉換成ListList list = gson.fromJson(json,new TypeToken<LIST>() {}.getType());//將json轉換成SetSet set = gson.fromJson(json,new TypeToken<SET>() {}.getType());

(6)通過json對象直接操作json以及一些json的工具a)格式化JsonString json = "[{/"id/":/"1/",/"name/":/"Json技術/"},{/"id/":/"2/",/"name/":/"java技術/"}]";Gson gson = new GsonBuilder().setPrettyPrinting().create();JsonParser jp = new JsonParser();JsonElement je = jp.parse(json);json = gson.toJson(je);b)判斷字符串是否是json,通過捕捉的異常來判斷是否是jsonString json = "[{/"id/":/"1/",/"name/":/"Json技術/"},{/"id/":/"2/",/"name/":/"java技術/"}]";boolean jsonFlag;try {new JsonParser().parse(str).getAsJsonObject();jsonFlag = true;} catch (Exception e) {jsonFlag = false;}

c)從json串中獲取屬性String json = "{/"id/":/"1/",/"name/":/"Json技術/"}";String propertyName = 'id';String propertyValue = "";try {JsonParser jsonParser = new JsonParser();JsonElement element = jsonParser.parse(json);JsonObject jsonObj = element.getAsJsonObject();propertyValue = jsonObj.get(propertyName).toString();} catch (Exception e) {propertyValue = null;}

d)除去json中的某個屬性String json = "{/"id/":/"1/",/"name/":/"Json技術/"}";String propertyName = 'id';JsonParser jsonParser = new JsonParser();JsonElement element = jsonParser.parse(json);JsonObject jsonObj = element.getAsJsonObject();jsonObj.remove(propertyName);json = jsonObj.toString();

e)向json中添加屬性String json = "{/"id/":/"1/",/"name/":/"Json技術/"}";String propertyName = 'desc';Object propertyValue = "json各種技術的調研";JsonParser jsonParser = new JsonParser();JsonElement element = jsonParser.parse(json);JsonObject jsonObj = element.getAsJsonObject();jsonObj.addProperty(propertyName, new Gson().toJson(propertyValue));json = jsonObj.toString();

f)修改json中的屬性String json = "{/"id/":/"1/",/"name/":/"Json技術/"}";String propertyName = 'name';Object propertyValue = "json各種技術的調研";JsonParser jsonParser = new JsonParser();JsonElement element = jsonParser.parse(json);JsonObject jsonObj = element.getAsJsonObject();jsonObj.remove(propertyName);jsonObj.addProperty(propertyName, new Gson().toJson(propertyValue));json = jsonObj.toString();

g)判斷json中是否有屬性String json = "{/"id/":/"1/",/"name/":/"Json技術/"}";String propertyName = 'name';boolean isContains = false ;JsonParser jsonParser = new JsonParser();JsonElement element = jsonParser.parse(json);JsonObject jsonObj = element.getAsJsonObject();isContains = jsonObj.has(propertyName);

h)json中日期格式的處理GsonBuilder builder = new GsonBuilder();builder.setDateFormat("yyyy-MM-dd HH:mm:ss.SSS");Gson gson = builder.create();然后使用gson對象進行json的處理,如果出現日期Date類的對象,就會按照設置的格式進行處理

i)json中對于Html的轉義Gson gson = new Gson();這種對象默認對Html進行轉義,如果不想轉義使用下面的方法GsonBuilder builder = new GsonBuilder();builder.disableHtmlEscaping();Gson gson = builder.create();


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美激情在线有限公司| 国产精品亚洲欧美导航| 91精品国产高清久久久久久| 91亚洲国产成人久久精品网站| 欧美电影免费观看高清完整| 欧美日韩一区二区精品| 少妇精69xxtheporn| 久久黄色av网站| 国产精品久久久久久久美男| 成人免费视频97| 国产美女主播一区| 国产欧美日韩精品在线观看| 成人av在线天堂| 国产精品av免费在线观看| 国产精品极品美女粉嫩高清在线| 国产欧美精品一区二区| 欧美亚洲视频一区二区| 懂色av一区二区三区| 欧美电影免费看| 欧美三级欧美成人高清www| 国产99久久精品一区二区| 成人午夜一级二级三级| 亚洲精品国精品久久99热| 久久好看免费视频| 国模精品视频一区二区三区| 国产亚洲视频中文字幕视频| 欧美综合一区第一页| 欧美最猛性xxxxx亚洲精品| 欧美国产视频一区二区| 日日骚av一区| 中文字幕日韩av电影| 欧美激情在线视频二区| 久久这里有精品视频| 成人黄色在线观看| 欧美成人激情视频免费观看| 亚洲理论片在线观看| 91亚洲国产成人精品性色| 日韩美女在线播放| 91精品在线国产| 成人有码视频在线播放| 亚洲三级黄色在线观看| 久久久精品中文字幕| 成人444kkkk在线观看| 亚洲日韩中文字幕| 色综合伊人色综合网| 国产精品高潮呻吟久久av无限| 欧美高清不卡在线| 欧美成人精品一区| 欧美激情精品久久久久| 亚洲热线99精品视频| 国产精品成人观看视频国产奇米| 日韩av网站电影| 中文字幕日韩欧美精品在线观看| 中文字幕日韩在线视频| 欧美日产国产成人免费图片| 精品美女久久久久久免费| 日韩中文字幕在线观看| 岛国视频午夜一区免费在线观看| 国产精品吹潮在线观看| 日韩精品视频中文在线观看| 97国产精品久久| 亚洲桃花岛网站| 免费99精品国产自在在线| 亚洲成人精品久久久| 久久亚洲精品网站| 26uuu另类亚洲欧美日本老年| 亚洲福利视频二区| 97色在线观看| 国产精品福利网| 久久影院模特热| 色妞一区二区三区| 91在线中文字幕| 色琪琪综合男人的天堂aⅴ视频| 日韩成人av在线播放| 国产日韩在线精品av| 91精品中国老女人| 国产精品自产拍高潮在线观看| 亚洲国产成人久久综合一区| 日韩美女视频免费看| 亚洲第一av在线| 中文字幕精品视频| 亚洲乱码国产乱码精品精天堂| 亚洲欧美日韩成人| 国产精品吊钟奶在线| 国产成人av在线| 日韩中文在线中文网在线观看| 久久久人成影片一区二区三区| 日韩av手机在线观看| 亚洲欧美综合v| 成人激情在线观看| 俺也去精品视频在线观看| 国产精品对白刺激| 91日韩在线视频| 在线观看精品国产视频| 91精品国产自产91精品| 国产欧美一区二区三区久久人妖| 精品亚洲一区二区三区在线观看| 欧美日韩一区二区免费在线观看| 欧美一区二区.| 久久精品一区中文字幕| 久久久久久久久久av| 色无极亚洲影院| 北条麻妃一区二区三区中文字幕| 亚洲人成电影网| 久热99视频在线观看| 成人免费视频97| 亚洲第一精品自拍| 好吊成人免视频| 久久这里有精品视频| 精品少妇一区二区30p| 91精品国产高清自在线| 亚洲成年人在线| 国产日韩在线精品av| 亚洲美女免费精品视频在线观看| 91美女片黄在线观看游戏| 26uuu日韩精品一区二区| 欧美电影免费在线观看| 亚洲欧美日韩一区二区在线| 久久久人成影片一区二区三区| 国产亚洲精品综合一区91| 国产玖玖精品视频| 欧洲日本亚洲国产区| 亚洲a一级视频| 亚洲成av人乱码色午夜| 91精品国产乱码久久久久久久久| 91久久精品一区| 岛国av一区二区| 91欧美精品成人综合在线观看| 国产亚洲一区二区精品| 亚洲在线一区二区| 成人xvideos免费视频| 国产视频在线一区二区| 九九视频这里只有精品| 97国产精品人人爽人人做| 91精品视频专区| 91久久久久久久久久| 国产亚洲精品美女久久久| 热re99久久精品国产66热| 91视频免费网站| 欧美激情按摩在线| 亚洲国产日韩欧美综合久久| 狠狠躁夜夜躁人人躁婷婷91| 国产99久久精品一区二区永久免费| 国产精品久久精品| 久久久久久久999精品视频| 国产亚洲精品高潮| 欧美日韩国内自拍| 中文字幕视频在线免费欧美日韩综合在线看| 亚洲欧美日韩中文在线| 国产精品视频午夜| 欧美人与性动交| 国产精品a久久久久久| 粗暴蹂躏中文一区二区三区| 久久精品国产一区二区三区| 亚洲色图第一页| 日韩视频永久免费观看| 欧美韩日一区二区| 国产拍精品一二三| 亚洲在线免费看| 久久视频在线看| 日韩高清电影好看的电视剧电影| 亚洲第一网站免费视频| 中文字幕亚洲一区| 91色中文字幕|