fastJson用法示例

平时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);
    }

}

猜你喜欢

转载自blog.csdn.net/a872822645/article/details/84257427
今日推荐