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