对于许久不用的东西,容易忘记。百度许久,也未能找到自己所要。

从今日起,有些东西就记载下来,不仅方便自己,希望能帮到他人吧。

    private String aviType = "0";    private String trace = "0";    private String isFirstTransfer = "1";    private String mty = "0140";    private String respcode = null;    private OpRecord opRecord;    private class OpRecord {        private String createTime = getData();        private String createUserCode = "00000075";        private String id = null;        private String waybillNo;        private int opCode = 182;        public OpRecord() {        }        public void setWaybillNo(String waybillNo) {            this.waybillNo = waybillNo;        }    }

将类作为JSON输入。

  public String getParams(String waybillNo) {        Gson gson = new Gson();           return gson.toJson(this);    }

输出打印结果:

{"aviType":"0","trace":"0","isFirstTransfer":"1","mty":"0140","opRecord":{    "createTime":"2018-07-30 14:01:02.632",    "createUserCode":"00000075",    "opCode":182    }}

装换成Json 是没有任何问题,但不是我想要的結果,缺少属性:

//属性1  private String respcode = null; //属性2  private String id = null;

想要的JSON结果:

{"aviType":"0","trace":"0","isFirstTransfer":"1","mty":"0140","respcode":null,"opRecord":{    "createTime":"2018-07-30 14:04:43.961",    "id":null,    "waybillNo":"899931211861",    "opCode":182}

为什么Gson会自动过滤null呢,查看源码边知道,new Gson() 自动序列化,导致过滤null。

  this.serializationContext = new JsonSerializationContext() {            public JsonElement serialize(Object src) {                return Gson.this.toJsonTree(src);            }            public JsonElement serialize(Object src, Type typeOfSrc) {                return Gson.this.toJsonTree(src, typeOfSrc);            }        };

解决方法:

找到问题所在,那我不序列化就不ok吗?可是却没有 new Gson(false),new Gson(null)等,类似这样的构造器。
不过却又另一种方法获取到Gson对象。

  public Gson create() {        List factories = new ArrayList();        factories.addAll(this.factories);        Collections.reverse(factories);        factories.addAll(this.hierarchyFactories);        this.addTypeAdaptersForDate(this.datePattern, this.dateStyle, this.timeStyle, factories);         return new Gson(this.excluder,                this.fieldNamingPolicy,                 this.instanceCreators,                 this.serializeNulls,                 this.complexMapKeySerialization,                 this.generateNonExecutableJson,                 this.escapeHtmlChars,                this.prettyPrinting,                 this.serializeSpecialFloatingPointValues,                this.longSerializationPolicy,                 factories);    }

this.serializeNulls,这个属性便是序列化了。让其为null这个属性便可以了。

 GsonBuilder gsonbuilder = new GsonBuilder(); gsonbuilder.serializeNulls(); Gson gson = gsonbuilder.create();

这样就获取到了,未经过序列化的Gson。

更多相关文章

  1. Android(安卓)关于手机基本信息的获得
  2. android 获取应用程序包名,图标,入口Activity类
  3. Android窗口类型
  4. Android(安卓)-- 程序判断手机ROOT状态,获取ROOT权限
  5. android6.0获取通讯录权限
  6. android之TypedArray
  7. MAC和Windows Android(安卓)Studio获取SHA1值
  8. 使用Android(安卓)Camera2 API获取YUV数据
  9. Android实用技巧之adb命令:ADB命令大全

随机推荐

  1. Ben Heck 用 Android(安卓)ADK 构建摇摇
  2. Android(安卓)webview 监听是否滚动到底
  3. Android从底部弹出一个PopupWindow
  4. android 私有文件的读写
  5. Android中对于onMeasure()的理解
  6. android webrtc 视频旋转
  7. android注解Butterknife的使用及代码分析
  8. 在js和java中判断手机访问的是ios系统还
  9. 【凯子哥带你学Framework】Activity界面
  10. 学习Android从0开始之基础篇(5)- Button简