android gson的使用

最近开始用这个工具,发现比较好用,不用写复杂的解析方法,只需要注意实体与json字段对应就ok了
1、添加gson-1.6.jar
2、最好写两个关于特殊的配置的类:日期的序列化和反序列化要实现的接口,这个很简单:
public class UtilDateDeserilize implements JsonDeserializer<Date>{
@Override
public Date deserialize(JsonElement arg0, Type arg1,
JsonDeserializationContext arg2) throws JsonParseException {
return new Date(arg0.getAsJsonPrimitive().getAsLong());
}
}
public class UtilDateSerilize implements JsonSerializer<Date>{
@Override
public JsonElement serialize(Date arg0, Type arg1,
JsonSerializationContext arg2) {
// TODO Auto-generated method stub
return new JsonPrimitive(arg0.getTime());
}
}
3、写个工具类中包含相互转化的两个方法即可:
public class Utiljsonbean {
public static String bean2json(Object bean,Type type){
Gson gson=new GsonBuilder().registerTypeAdapter(Date.class, new UtilDateSerilize()).setDateFormat(java.text.DateFormat.LONG).create();
return gson.toJson(bean);
}
public static <T> T json2bean(String json,Type type){
Gson gson=new GsonBuilder().registerTypeAdapter(Date.class, new UtilDateDeserilize()).setDateFormat(java.text.DateFormat.LONG).create();
return gson.fromJson(json, type);
}
}
4、最后是测试
public class MyGsonTestActivity extends Activity {
    public static final String TAG="MyGsonTestActivity-->";
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        List<Person> list=new ArrayList<Person>();
        Date d1=new Date(2012,10,29);
        Person p1=new Person(1, "张一", 23,d1);
        Date d2=new Date(2012,10,30);
        Person p2=new Person(2, "张二", 24, d2);
        list.add(p1);
        list.add(p2);

        Type type=new TypeToken<List<Person>>(){}.getType();
//beantojson
        String listjson=Utiljsonbean.bean2json(list, type);
        Log.i(TAG, "listjson="+listjson);
        Log.i(TAG, "=================================");
//jsontobean
        List<Person> listp2=Utiljsonbean.json2bean(listjson, type);
        Person p1j=listp2.get(0);
        Person p2j=listp2.get(1);
        Log.i(TAG, "p1j=="+p1j.getId()+","+p1j.getAge()+","+p1j.getName()+","+p1j.getBirthday());
        Log.i(TAG, "p2j=="+p2j.getId()+","+p2j.getAge()+","+p2j.getName()+","+p2j.getBirthday());
    }
}
这里是log信息
 listjson=[{"name":"张一","birthday":61312262400000,"id":1,"age":23},{"name":"张二","birthday":61312348800000,"id":2,"age":24}]
(31957): =================================
 p1j==1,23,张一,Fri Nov 29 00:00:00 格林尼治标准时间+0800 3912
 p2j==2,24,张二,Sat Nov 30 00:00:00 格林尼治标准时间+0800 3912

看 就是这么方便一行代码即可,但是要注意:
1、json字段与实体属性对应,转化代码捕捉异常
2、实体必须要有无参的构造函数,不知为毛,我的没有就报错
总体结构
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值