compile 'com.google.code.gson:gson:2.7'
3、建立子執行緒
讀取json檔案,並採用gson庫中的介面,對其進行解析
4、在ui 主線程中採用handle獲取解析的資料進行展示
5、原始碼說明:
使用接觸最多的就是gson和gsonbuilder類。
其中,gsonbuilder就是gson的builder類,採用建造者模式方式,來簡化gson構造方法需要的引數。
gson構造方法如下:
gsonbuilder類內容進行說明:
private用於配置一些不希望被轉換成json格式的物件的成員變數excluder
excluder = excluder.default
;
private longserializationpolicy longserializationpolicy = longserializationpolicy.defaultgson類說明:;private fieldnamingstrategy fieldnamingpolicy = fieldnamingpolicy.identity
;private final map, instancecreator>> instancecreators
= new hashmap, instancecreator>>();
private final listfactories = new arraylist();
是最常使用的物件,包括:
publict fromjson(string json, class classoft) throws jsonsyntaxexception
public statict jsonstringtoclass(string jsonstring, class tclass
public string tojson(object src)建構函式中就是將引數列表中的物件配置為成員變數
typeadapte***ctory的操作如下:
listfactories = new arraylist();此處,factories預先記載了很多基本型別轉換元件的factory,// built-in type adapters that cannot be overridden
factories.add(typeadapters.json_element_factory
);factories.add(objecttypeadapter.factory
);// the excluder must precede all adapters that handle user-defined types
factories.add(excluder);
// user's type adapters
factories.addall(typeadapte***ctories);
// type adapters for basic platform types
factories.add(typeadapters.string_factory
);factories.add(typeadapters.integer_factory
);factories.add(typeadapters.boolean_factory
);factories.add(typeadapters.byte_factory
);factories.add(typeadapters.short_factory
);typeadapterlongadapter = longadapter(longserializationpolicy);
factories.add(typeadapters.newfactory(long.class, long.class,
longadapter));
factories.add(typeadapters.newfactory(double.class, double.class,
doubleadapter(serializespecialfloatingpointvalues)));
factories.add(typeadapters.newfactory(float.class, float.class,
floatadapter(serializespecialfloatingpointvalues)));
factories.addall(typeadapte***ctories)
是新增建構函式中傳入的使用者自定義的typeadapte***ctory
typeadapters抽象類,提供了兩個抽象函式作為hook函式來讓使用者過載
typeadapte***ctory是乙個介面
typeadapter create(gson gson, typetoken type);
typeadapters定義了幾乎所有的基礎型別的typeadapter和factory
fromjson()
只要分為三個步驟:
typetoken typetoken = (typetoken) typetoken.get(typeoft);//獲得要轉換型別對應的typetoken物件tojsontypeadapter typeadapter = getadapter(typetoken);//通過type來獲得adapter
t object = typeadapter.read(reader);//通過typeadapter來轉換物件
tojson和fromjson很像,就是獲得相應的typeadapter,只不過這次呼叫的是write方法
android開發之Gson的使用
gson是google提供的乙個json的處理工具類庫。import com.google.gson.gson import com.google.gson.reflect.typetoken 這個用於解析頂級為list的資料 1 資料 result code 0,result reason 2 建...
Android之推薦看的Android原始碼
handler message looper handler被稱為 非同步提交器 是android開發入門教程必定談及的東西,這也是activity等元件的工作機制需要用到的東西,是 資料驅動 框架的重要組成,作為閱讀原始碼的入門最適合不過。activity和service 作為經常使用到的元件,閱...
ConcurrentHahMap 基於原始碼解析
目錄 1 簡單總結 2 jdk1.7 segments hashentry陣列 鍊錶解析 3 jdk1.8 雜湊表 紅黑樹 cas 解析 參考 如下圖所示,segments繼承了可重入鎖reentrantlock,每個片段有乙個鎖,叫做 分段鎖 1 segment 分段鎖 concurrenthas...