Gson之GsonBuilder用法笔记

  • 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。

你可能感兴趣的:(android,gson)