android 对象到json json到对象
接口类
package com.test.json; import org.json.JSONException; import org.json.JSONObject; public interface JsonSerializable { abstract void deCode(JSONObject object) throws JSONException; abstract void enCode(JSONObject object) throws JSONException; }
实体类
package com.test.json; import java.io.Serializable; import org.json.JSONException; import org.json.JSONObject; public class ItemInfo implements Serializable , JsonSerializable{ /** * */ private static final long serialVersionUID = 1L; public int screen; public int cellX; public int cellY; public int mWidth; public int mHeight; public Object ObjectTag; public ItemInfo(){} public ItemInfo(int screen,int cellX, int cellY) { super(); this.screen = screen; this.cellX = cellX; this.cellY = cellY; } public ItemInfo(int screen,int cellX, int cellY, int mWidth, int mHeight, Object objectTag) { super(); this.screen = screen; this.cellX = cellX; this.cellY = cellY; this.mWidth = mWidth; this.mHeight = mHeight; ObjectTag = objectTag; } @Override public void enCode(JSONObject object) throws JSONException { object.put("screen", screen); object.put("cellX", cellX); object.put("cellY", cellY); } @Override public void deCode(JSONObject object) throws JSONException { screen = object.getInt("screen"); cellX = object.getInt("cellX"); cellY = object.getInt("cellY"); } }
package com.test.json; import org.json.JSONException; import org.json.JSONObject; import android.graphics.Bitmap; public class AppInfo extends ItemInfo { /** * */ private static final long serialVersionUID = 1L; public Bitmap iconBitmap; public String title; public boolean isInstall = false; public boolean isUpdate = false; public AppInfo(){ super(); } public AppInfo(Bitmap iconBitmap, String title) { super(); this.iconBitmap = iconBitmap; this.title = title; } public AppInfo(int screen, int cellX, int cellY, Bitmap iconBitmap, String title) { super(screen, cellX, cellY); this.iconBitmap = iconBitmap; this.title = title; } public boolean eqXY(AppInfo appInfo) { if (this.cellX == appInfo.cellX && this.cellY == appInfo.cellY) return true; return false; } @Override public void enCode(JSONObject object) throws JSONException { super.enCode(object); object.put("title", title); object.put("isInstall", isInstall); object.put("isUpdate", isUpdate); } @Override public void deCode(JSONObject object) throws JSONException { super.deCode(object); title = object.getString("title"); isInstall = object.getBoolean("isInstall"); isUpdate = object.getBoolean("isUpdate"); } }
activity
package com.test.json; import org.json.JSONException; import org.json.JSONObject; import org.json.JSONTokener; import android.app.Activity; import android.content.Context; import android.content.SharedPreferences; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class JsonTestActivity extends Activity implements OnClickListener { private Button button; private AppInfo appInfo; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); button = (Button) findViewById(R.id.button1); button.setOnClickListener(this); findViewById(R.id.button2).setOnClickListener(this); appInfo = new AppInfo(1, 1, 1, null, "1234"); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.button1: objToJson(); break; case R.id.button2: jsonToObj(); break; default: break; } } private void objToJson(){ JSONObject jsonObject = new JSONObject(); try { appInfo.enCode(jsonObject); String data = jsonObject.toString(); getDataContainer().edit().putString("Appinfo",data).commit(); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } } private void jsonToObj(){ String jsonStr = getDataContainer().getString("Appinfo",null); if(null == jsonStr) return ; try { JSONObject object = (JSONObject) new JSONTokener(jsonStr).nextValue(); appInfo = new AppInfo(); appInfo.deCode(object); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } } private SharedPreferences getDataContainer(){ return getSharedPreferences("JsonTestActivity", Context.MODE_WORLD_READABLE | Context.MODE_WORLD_WRITEABLE); } }