您的位置:首页 > 产品设计 > UI/UE

Gson之GsonBuilder用法笔记

2015-09-14 15:42 155 查看


public GsonBuilder setFieldNamingStrategy(FieldNamingStrategy fieldNamingStrategy)

public interface FieldNamingStrategy {
String translateName(Field var1);
}


通过查看上面的接口可以看出来,这是传进去字段在生成json的时候改名字用的。

public GsonBuilder excludeFieldsWithModifiers(int… modifiers)

这个方法的作用是gson转换的时候排除掉指定的修饰符Modifiers,可选的类型从
java.lang.reflect.Modifier
中得到,可以是Modifier.PUBLIC这个单个修饰符,也可以是Modifier.fieldModifiers()这样的组合修饰符。

public static int fieldModifiers() {
return PUBLIC | PROTECTED | PRIVATE | STATIC | FINAL | TRANSIENT | VOLATILE;
}


比如private等不输出为json,比如:

GsonBuilder excludeFieldsWithModifiers = gsonBuilder.excludeFieldsWithModifiers(Modifier.PRIVATE); Gson create = excludeFieldsWithModifiers.create();

String json2 = create.toJson(new Developer());

public GsonBuilder excludeFieldsWithoutExposeAnnotation()

这个方法表示解析的时候去掉JavaBean中没有@Expose注解的字段

public GsonBuilder addDeserializationExclusionStrategy(ExclusionStrategy strategy)

gson反序列化时采用的策略。

ExclusionStrategy的代码如下:

public interface ExclusionStrategy {
boolean shouldSkipField(FieldAttributes var1);
boolean shouldSkipClass(Class<?> var1);
}


这两个方法返回值,来判断是否反序列化。

public GsonBuilder addSerializationExclusionStrategy(ExclusionStrategy strategy)

与上面的逻辑类似。

public GsonBuilder disableHtmlEscaping()

Gson使用时将一些字符自动转换为Unicode转义字符,比如把
{"s":"<"}
转换成
{"s":"\u003c"}
,调用
disableHtmlEscaping
以后就不会自动转换了。

public GsonBuilder setDateFormat(String pattern)

格式化Date类型数据时候的pattern,底层是SimpleDateFormat来操作的。

public GsonBuilder setDateFormat(int style)

style从
java.text.DateFormat
中取

public GsonBuilder setDateFormat(int dateStyle, int timeStyle)

与上面类似

public GsonBuilder registerTypeAdapter(Type type, Object typeAdapter)

自定义序列化和反序列化的适配器

public GsonBuilder registerTypeAdapter(Type type, Object typeAdapter) {
$Gson$Preconditions.checkArgument(typeAdapter instanceof JsonSerializer<?>
|| typeAdapter instanceof JsonDeserializer<?>
|| typeAdapter instanceof InstanceCreator<?>
|| typeAdapter instanceof TypeAdapter<?>);
if (typeAdapter instanceof InstanceCreator<?>) {
instanceCreators.put(type, (InstanceCreator) typeAdapter);
}
if (typeAdapter instanceof JsonSerializer<?> || typeAdapter instanceof JsonDeserializer<?>) {
TypeToken<?> typeToken = TypeToken.get(type);
factories.add(TreeTypeAdapter.newFactoryWithMatchRawType(typeToken, typeAdapter));
}
if (typeAdapter instanceof TypeAdapter<?>) {
factories.add(TypeAdapters.newFactory(TypeToken.get(type), (TypeAdapter)typeAdapter));
}
return this;


}

public GsonBuilder setLongSerializationPolicy(LongSerializationPolicy serializationPolicy)

设置对Long类型的变量,是解析成字符串还是解析为long类型,可以这样设置如下:
Gson gson = newGsonBuilder. setLongSerializationPolicy(LongSerializationPolicy.DEFAULT).create(),
其中LongSerializationPolicy.DEFAULT为默认值,Long类型转换为Long型,LongSerializationPolicy.STRING为字符串型,就是把Long类型的值强制转换为字符串类型。

public GsonBuilder setFieldNamingPolicy(FieldNamingPolicy namingConvention)

如果设置FieldNamingPolicy.UPPER_CAMEL_CASE),会把字段首字母大写,注:对于实体上使用了@SerializedName注解的不会生效.

public GsonBuilder generateNonExecutableJson()

官方的说法是: Makes the output JSON non-executable in Javascript by prefixing the generated JSON with some special text。就是说在json前面加些特殊的文本,使其不能在Javascript中不能运行的json。

public GsonBuilder setPrettyPrinting()

生成格式化后的json。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: