1. CharMatcher

String serviceUrl = CharMatcher.is('/').trimTrailingFrom(ConfigHelper.metaServiceUrl()) + "/storage/query?appid=" + ConfigHelper.appId() + "&feature=1";

2. Precondition

Preconditions.checkArgument(!Strings.isNullOrEmpty(namespace), "参数namespace不能为空");

3. JsonParser

 JsonObject content = new JsonParser().parse(response).getAsJsonObject();
int status =content.get("status").getAsInt();
if (status != 200)
throw new Exception("加载meta信息出现异常,status:" + status);
for (JsonElement jsonElement : content.get("result").getAsJsonArray()) {
JsonObject item = jsonElement.getAsJsonObject();
StorageInfo storage = new StorageInfo();
String namespace = item.get("namespace").getAsString().toLowerCase();
storage.setStorageName(item.get("storageName").getAsString());
storage.setStorageType(StorageType.fromId(item.get("storageType").getAsInt()));
result.put(namespace, storage);
}

4. Strings

Strings.isNullOrEmpty(namespace)

5. 对于bean 中有部分属性需要忽略

解决方案:(使用ExclusionStrategy)

创建注解类 Exclude

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface Exclude {
}

在gson中配置 忽略带有Exclude的属性:

Gson gson = new GsonBuilder()
.setExclusionStrategies(new ExclusionStrategy(){
@Override
public boolean shouldSkipField(FieldAttributes f) {
return f.getAnnotation(Exclude.class) != null;
} @Override
public boolean shouldSkipClass(Class<?> clazz) {
return false;
}
})

使用时在需要忽略的属性上标记@Exclude 即可:

class Mock{
String name;
String age;
@Exclude
String gender;
}

------------------------

指定哪些是要暴露转换的属性

@Expose
private Integer businessId;

但这个时候要用

Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
BusinessSystem bus = (BusinessSystem) (gson.fromJson(data,
BusinessSystem.class));

6. 自定义序列化字段名字

@SerializedName("email_address")
public String emailAddress;

7. 泛型在Gson中的使用

//数组
String jsonss = "[\"aa\",\"bb\",\"cc\"]";
String[] ss = gson.fromJson(jsonss, String[].class);
for (String s:ss) {
Log.i(TAG,s);
}
String s = gson.toJson(ss);
Log.i(TAG,s); //List
List<String> list=gson.fromJson(jsonss, new TypeToken<List<String>>() {}.getType());
List<User> list=gson.fromJson(jsonss, new TypeToken<List<User>>() {}.getType());
//也就是说,GSON把json转换为JAVA泛型对象的时候,要先定义好
//Type collectionType = new TypeToken<GenericModel<Integer>>(){}.getType()

Gson使用技巧的更多相关文章

  1. Android Studio 使用技巧

    1.导入Android Studio 工程的一些技巧 因为Gradle版本的问题,我们在使用AS导入工程的时候,经常会碰到本地没有该项目的Gradle版本,这时候AS就会去下载这个版本的Gradle, ...

  2. Json字符串转换为java对象的各种实现方法【json_lib框架、Gson、org.json】

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://mengzhengbin520.blog.51cto.com/7590564/12 ...

  3. Rxjava +Retrofit 你需要掌握的几个技巧,Retrofit缓存,RxJava封装,统一对有无网络处理,异常处理, 返回结果问题

    本文出处 :Tamic 文/ http://blog.csdn.net/sk719887916/article/details/52132106 Rxjava +Rterofit 需要掌握的几个技巧 ...

  4. 你真的会用Gson吗?Gson使用指南(3)

    原文出处: 怪盗kidou 注:此系列基于Gson 2.4. 本次的主要内容: 字段过滤的几种方法 基于@Expose注解 基于版本 基于访问修饰符 基于策略(作者最常用) POJO与JSON的字段映 ...

  5. Gson 使用new TypeToken<List<String>>(){}.getType() 为什么有 {}?

    前言:使用 gson 时,不明白为什么有这种写法:new TypeToken<List<String>>(){}.getType(),所以来解惑.最终发现其实就是自己的 jav ...

  6. Gson 使用总结 高级用法

    Gson基本用法 参考:http://www.jianshu.com/p/e740196225a4 Gson提供了fromJson() 和toJson() 两个直接用于解析和生成的方法,前者实现反序列 ...

  7. (转载)更新到Retrofit2的一些技巧

    更新到Retrofit2的一些技巧 作者 小武站台 关注 2016.02.22 22:13* 字数 1348 阅读 1621评论 0喜欢 5赞赏 1 原文链接:Tips on updating to ...

  8. 6个技巧加速你的gradle编译

    近期我们都在讨论build系统,我们看了一些技巧能够让你的Maven build更快. 结论和反映都势不可挡.由于我们提供的技巧,很多其它的人都非常高兴能加快他们完毕自己的项目.如今,让我们看一下怎么 ...

  9. Android Studio 3.0 及以上版本使用技巧总结

    1.更新Android Studio后下载Gradle文件的技巧 更新到3.0版本后,可能会出现创建新项目一直停留在如下图的界面: 选择等待?不知道要等到什么时候,这时候怎么办呢?显然,不能一直等待下 ...

随机推荐

  1. Centos 6.4 安装dnsmasq

    1 下载源码 wget http://www.thekelleys.org.uk/dnsmasq/dnsmasq-2.45.tar.gz cp dnsmasq-2.45.tar.gz /usr/src ...

  2. var_dump

    1:var_dump 主要输出类型和.长度和变量的值: 2: var_dump() 能打印出类型print_r() 只能打出值echo() 是正常输出...需要精确调试的时候用 var_dump(); ...

  3. java 注解默认值

    package com.zejian.annotationdemo; import java.lang.annotation.ElementType; import java.lang.annotat ...

  4. Active Directory Authentication in ASP.NET MVC 5 with Forms Authentication and Group-Based Authorization

    I know that blog post title is sure a mouth-full, but it describes the whole problem I was trying to ...

  5. CentOS7主机名修改

    1.命令行更改主机名,重启终端即生效. #hostnamectl --static set-hostname k8s-master

  6. 详解 Redis 应用场景及应用实例

    redis(二)高级用法 详解 Redis 应用场景及应用实例 Redis 它是什么?它用来做什么?它的优势与短板如何? 告诉你Redis是一个牛逼货

  7. 【转】QT Graphics-View官方介绍(中文翻译)

    一.GraphicsView框架简介 QT4.2开始引入了Graphics View框架用来取代QT3中的Canvas模块,并作出了改进,Graphics View框架实现了模型-视图结构的图形管理, ...

  8. 设置Linux打开文件句柄/proc/sys/fs/file-max和ulimit -n的区别

    max-file 表示系统级别的能够打开的文件句柄的数量.是对整个系统的限制,并不是针对用户的. ulimit -n 控制进程级别能够打开的文件句柄的数量.提供对shell及其启动的进程的可用文件句柄 ...

  9. Intelij的idea和pycharm的使用

    idea是一个很复杂但是要页很好使用的工具,其集成了很多功能,也觉定了其很多的快捷键,要在使用得过程中总结其好处. 1.psvm:public static void main(){      } 2 ...

  10. 前端基础开发之HTML

    简介:                                                                                1.HTML是什么? htyper ...