Android 使用AutoValue和Gson进行JSON序列化/反序列化

示例

导入您的gradle根文件

classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'

导入您的gradle应用文件

apt 'com.google.auto.value:auto-value:1.2'  

apt 'com.ryanharter.auto.value:auto-value-gson:0.3.1'  

provided 'com.jakewharton.auto.value:auto-value-annotations:1.2-update1'  

provided 'org.glassfish:javax.annotation:10.0-b28'

创建具有自动值的对象:

@AutoValue public abstract class SignIn {    

    @SerializedName("signin_token") public abstract String signinToken();

    public abstract String username();

    public static TypeAdapter<SignIn> typeAdapter(Gson gson) {

        return new AutoValue_SignIn.GsonTypeAdapter(gson);

    }

    public static SignIn create(String signin, String username) {

        return new AutoValue_SignIn(signin, username);

    }

}

使用GsonBuilder创建Gson转换器

Gson gson = new GsonBuilder()

                .registerTypeAdapterFactory(

                    new AutoValueGsonTypeAdapterFactory())

                .create());

反序列化

String myJsonData = "{

    \"signin_token\": \"mySigninToken\",

    \"username\": \"myUsername\" }";

SignIn signInData = gson.fromJson(myJsonData, Signin.class);

连载

Signin myData = SignIn.create("myTokenData", "myUsername");

String myJsonData = gson.toJson(myData);

使用Gson是通过使用POJO对象简化序列化和反序列化代码的好方法。副作用是反射是昂贵的性能明智的选择。这就是为什么使用AutoValue-Gson生成CustomTypeAdapter可以避免这种反射开销,同时在发生api更改时保持非常简单的更新。

以上是 Android 使用AutoValue和Gson进行JSON序列化/反序列化 的全部内容, 来源链接: utcz.com/z/326249.html

回到顶部