JSON数据保存与加载

来源:互联网 发布:名字创意设计软件 编辑:程序博客网 时间:2024/06/08 05:44

首先我们盘点一下参与者

Crime 罪犯类,
CrimeLab 罪犯列表类
CriminalIntentJSONSerializer 罪犯json化 并且保存

没有视图也没有控制的事 三个模型类玩游戏

保存和加载自然归CriminalIntentJSONSerializer管理

public class CriminalIntentJSONSerializer {    private Context context;    private String Filename;    public CriminalIntentJSONSerializer(Context c, String f)    {        context = c;        Filename = f;    }    public void saveCrimes(ArrayList<Crime> crimes) throws JSONException,IOException    {....}    public ArrayList<Crime> loadCrimes() throws  IOException,JSONException    {....}

将crime自己变成JSON 和将JSON 变成crime自然是Crime自己的事情喽

public class Crime extends android.text.format.DateFormat{//罪犯类 以及罪犯所携带的数据    public JSONObject toJSON()throws JSONException    {        JSONObject jsonObject = new JSONObject();        jsonObject.put(JSON_ID,mId.toString());        jsonObject.put(JSON_TITLE,mTitle);        jsonObject.put(JSON_SOLVED,mSolved);        jsonObject.put(JSON_DATE,mDate.getTime());        if(photo!=null)            jsonObject.put(JSON_PHOTO,photo.toJSON());        return jsonObject;    }    public Crime(JSONObject jsonObject) throws  JSONException    {        mId = UUID.fromString(jsonObject.getString(JSON_ID));        if(jsonObject.has(JSON_TITLE))        {            mTitle=jsonObject.getString(JSON_TITLE);        }        mSolved=jsonObject.getBoolean(JSON_SOLVED);        mDate = new Date(jsonObject.getLong(JSON_DATE));        if(jsonObject.has(JSON_PHOTO))            photo = new Photo(jsonObject.getJSONObject(JSON_PHOTO));}

那剩下那个干嘛呢?

public class CrimeLab{    private CriminalIntentJSONSerializer criminalIntentJSONSerializer;   // private  Context Appcontext;    public boolean saveCrimes()    {        try {            criminalIntentJSONSerializer.saveCrimes(crimes);            Log.d(TAG,"crimes saved to file");            return true;        }        catch (Exception e)        {            Log.e(TAG,"Error saving criems;",e);            return false;        }    }}

CrimeLab 负责将crime批量传输到CriminalIntentJSONSerializer,然后每一个crime调用自己的toJSON方法,最后保存起来;

加载的时候,每一个crime都直接调用自己的初始化方法。从JSON拿到数据;

是不是很清楚的;

0 0
原创粉丝点击