Gson的简单使用(二)

Gson的使用(二)

  接着上一篇详谈一下Gson,Gson其实不仅仅可以用于解析Json字符串,它可以很方便的将对象转化为String,或将String转换为对象,我们可以好好的利用这一点。
  在两个Activity之间使用Intent传值时,我们一般会使用Bundle将数据传来传去,简单的举个例子:

  Intent intent = new Intent(context, DetailActivity.class);
          Bundle b = new Bundle();
          b.putString(Constant.KEY_CONTENT_ID, id);
          intent.putExtras(b);
          context.startActivity(intent);
  很简单的传值,下一个Activity需要上一个Activity的id数值,我们传过去,如果又需要一个字段呢?再加一个,又有需要呢?再加一个……终于,你的intent代码段变得很臃肿,这时候就需要将整个data对象放到bundle中传过去,你需要什么就去取什么就好了,这时就有一个新问题了出现了:bundle传递基本数据类型是比较友好的,String类型就putString(),int类型就putInt(),其他数据类型就不太友好,需要序列化传递,putParcelable()或者putSerializable(),写起来比较麻烦,当然了AndroidStudio也提供了快速序列化的插件:android parcelable code generator,这里我们换一个方法。
  终于轮到Gson上场了,Gson将对象转化为String的行为,也可以说是一种序列化,而且更为简单,当需要传递对象时,直接将其转化为String类型,然后bundle.putString(),接收方再将其接收到的String转化为对象即可,方便又直观。

  再说点其他的,有时候解析Json字符串的时候,服务端会传过来java关键字:static,class之类的,我有一次甚至还见过别的项目里面居然用char当字段名,因为Json不仅仅是面向Java的,其他语言也可以尽情使用Json,这时候最好和服务端沟通,更改字段,如果改不了,也没关系,我们这边将就一下,写一条注释:

  @SerializedName("static")
  private int staticX;

  public int getStaticX() {
        return staticX;
    }

  public void setStaticX(int staticX) {
       this.staticX = staticX;
   }
  如果你使用上篇文章提到的GsonFormat,那么插件会帮你做这个,你就更不用担心了。

  再说一条,如果你的Json串很复杂,包含了很多层,对象嵌套数组,数组又包含对象,那么GsonFormat会将所有对象都放到当前类里面:

例子

  你将会看到各种对象以内部类的形式嵌套其中,如果没有强迫症的同学,可以直接使用点的方式声明(ContentData.DataBean itemData),更复杂的可以多点几次,如果有强迫症的同学,可以将里层的Data抽出来,放到同一个Model包下面也可以,因人而异吧,这两种方法都不会有太大的问题,区别就是你习惯看model文件多一些还是习惯看变量类型的点多一些。
  有关Gson的简单使用就介绍到这里,如果以后有新的心得再更新。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值