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. 【iCore1S 双核心板_ARM】例程四:USART通信实验——通过命令控制LED

    实验原理: 开发板上自带一片CH340芯片,完成本实验电脑需要安装CH340驱动, CH340的TXD连接STM32的GPIO(PB6),CH340的RXD连接STM32的 GPIO(PB7),通过串 ...

  2. precision scale

    precision意为“精密度.精确”(精度),表示该字段的有效数字位数了. scale意为“刻度.数值范围”(),表示该字段的小数位数. 举个简单的例子 123.45:precision = 5 , ...

  3. [echarts] 横纵数据散点图

    需求:课程平均分(X)与课程通过率散点图 http://echarts.baidu.com/echarts2/doc/example/scatter1.html https://www.cnblogs ...

  4. 响应式编程笔记三:一个简单的HTTP服务器

    # 响应式编程笔记三:一个简单的HTTP服务器 本文我们将继续前面的学习,但将更多的注意力放在用例和编写实际能用的代码上面,而非基本的APIs学习. 我们会看到Reactive是一个有用的抽象 - 对 ...

  5. Java8学习笔记(六)--Optional

    前言 身为一名Java程序员,大家可能都有这样的经历:调用一个方法得到了返回值却不能直接将返回值作为参数去调用别的方法.我们首先要判断这个返回值是否为null,只有在非空的前提下才能将其作为其他方法的 ...

  6. WPF自定义路由事件(一)

    首先自定义事件支持事件路由,需要使用 RegisterRoutedEvent 方法注册 RoutedEvent C#语法 public static RoutedEvent RegisterRoute ...

  7. Qt编写调试日志输出类带网络转发(开源)

    用qt开发商业程序已经九年了,陆陆续续开发过至少几十个程序,除了一些算不算项目的小工具外,大部分的程序都需要有个日志的输出功能,希望可以将程序的运行状态存储到文本文件或者数据库或者做其他处理等,qt对 ...

  8. css3整理--background-image

    background-image语法: background-image: url1,url2,...,urlN; 通过“,”分隔N张背景图片,background的所有其它属性需要配合该属性进行设置 ...

  9. css3整理--background-size

    background-size语法: /*Mozilla*/ -moz-background-size: auto || <length> || <percentage> || ...

  10. 安卓手机优化 ROOT自启动管理 + 电量管理

    一.KingRoot + 净化大师 KingRoot 主要完成ROOT 和 自启动软件的管理 这里禁止的自启动管理 对于有些软件是不太管用 比如美团 手机百度等 净化大师 主要完成 高电量的软件优化 ...