fastJson用法示例
阿新 • • 發佈:2018-12-12
平時model和 json 互轉 基本都是Gson 或者 fastjson .這裡展示是fastjson用法。
大概分為4種情況。1、單一model轉為json 2、json轉為單一model 3、model內巢狀model 轉為json 4、json轉為內部巢狀model的model
首先引入 fastjosn
implementation 'com.alibaba:fastjson:1.1.70.android'
首先定義2個 實體model
package com.example.sunlei.map; import com.alibaba.fastjson.annotation.JSONField; import java.io.Serializable; /** * <p>create by sunlei on 2018/11/15 * <p>[email protected] * <p>Describe : //單一model */ public class PoiAddressModel implements Serializable { //@JSONField(name = "name") 這是註釋了。如果當前定義欄位與要解析json內欄位一致。則Ok 。否則需要放開註釋 ,單獨定義 private String name; // @JSONField(name = "add") private String add; // @JSONField(name = "lat") private double lat; //@JSONField(name = "lon") private double lon; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAdd() { return add; } public void setAdd(String add) { this.add = add; } public double getLat() { return lat; } public void setLat(double lat) { this.lat = lat; } public double getLon() { return lon; } public void setLon(double lon) { this.lon = lon; } }
package com.example.sunlei.map; import com.alibaba.fastjson.annotation.JSONField; import java.util.ArrayList; import java.util.List; /** * <p>create by sunlei on 2018/11/15 * <p>[email protected] * <p>Describe : //內部巢狀其它model */ public class PoiAddressListModel<T> { // @JSONField(name = "data") private List<T>data=new ArrayList<>(); public List<T> getData() { return data; } public void setData(List<T> data) { this.data = data; } }
下面直接展示對上面2個model為基礎的展示用法:
package com.example.sunlei.demo; import android.app.Activity; import android.os.Bundle; import android.support.annotation.Nullable; import android.util.Log; import com.alibaba.fastjson.TypeReference; import com.example.sunlei.map.FastJsonUtils; import com.example.sunlei.map.PoiAddressListModel; import com.example.sunlei.map.PoiAddressModel; import com.example.sunlei.map.PoiAddressNewModel; import com.example.sunlei.map.ToastUtils; import java.io.IOException; import java.util.ArrayList; import java.util.List; /** * <p>create by sunlei on 2018/11/16 * <p>[email protected] * <p>Describe : */ public class DemoFastJson extends Activity { List<PoiAddressModel>dataArray=new ArrayList<>(); PoiAddressModel poiAddressModel1; PoiAddressModel poiAddressModel2; String data1;//把model轉為json PoiAddressModel poiAddressModelnew;//把json轉回model String datalist;//把model轉為json PoiAddressListModel poiAddressListModel; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); initData(); try { //單層model轉String data1= FastJsonUtils.toJsonString(poiAddressModel1); //String 轉 Model poiAddressModelnew = FastJsonUtils.fromStringJson(data1,PoiAddressModel.class); } catch (IOException e) { e.printStackTrace(); ToastUtils.showLong(DemoFastJson.this,"失敗"); } double lat=poiAddressModelnew.getLat(); dataArray.add(poiAddressModel1); dataArray.add(poiAddressModel2); PoiAddressListModel poiAddressListModel=new PoiAddressListModel(); poiAddressListModel.setData(dataArray); try { //model 巢狀之後轉 String datalist= FastJsonUtils.toJsonString(poiAddressListModel); // String 解析為 多層巢狀的 model poiAddressListModel= FastJsonUtils.fromStringJson(datalist,new TypeReference<PoiAddressListModel<PoiAddressNewModel>>(){}); } catch (IOException e) { e.printStackTrace(); } List<PoiAddressNewModel> list=poiAddressListModel.getData(); ToastUtils.showLong(DemoFastJson.this,list.get(0).getNewname()); Log.d("result","data1"+data1); Log.d("result","datalist"+datalist); Log.d("result","list"+list.size()+""); // Log.d("result",list.size()+""); } /** * 初始化資料 */ private void initData(){ poiAddressModel1= new PoiAddressModel(); poiAddressModel1.setAdd("北京朝陽"); poiAddressModel1.setName("國貿"); poiAddressModel1.setLat(10); poiAddressModel1.setLon(20); poiAddressModel2= new PoiAddressModel(); poiAddressModel2.setAdd("北京四惠"); poiAddressModel2.setName("八通線"); poiAddressModel2.setLat(50); poiAddressModel2.setLon(100); } }