Gson的使用-4

简单自定义序列化

public class User {
    private static final String APPLICATION_USER = "USER";
    private String name;
    private int age;
    public class UserData{
        private int id;
        private String name;
}
}

JsonSerializer<User.UserData> jsonSerializer = new JsonSerializer<User.UserData>() {
            @Override
            public JsonElement serialize(User.UserData src, Type typeOfSrc, JsonSerializationContext context) {
                JsonObject jsonObject = new JsonObject();
                jsonObject.addProperty("id",src.getId());
                return jsonObject;
            }
        };
        GsonBuilder gsonBuilder = new GsonBuilder();
        gsonBuilder.registerTypeAdapter(User.class,jsonSerializer);

简单自定义反序列化

JsonDeserializer<User.UserData> jsonDeserializer = new JsonDeserializer<User.UserData>() {
            @Override
            public User.UserData deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
                int id = json.getAsInt();
                return 
            }
        }
        GsonBuilder gsonBuilder = new GsonBuilder();
        gsonBuilder.registerTypeAdapter(User.class,jsonderializer);

jsonAdapter()注解;

自定义序列化和反序列化的过程

public class MerchantListSerializer implements JsonSerializer<List<Merchant>> {  
    @Override
    public JsonElement serialize(List<Merchant> src, Type typeOfSrc, JsonSerializationContext context) {
        JsonArray jsonMerchant = new JsonArray();

        for (Merchant merchant : src) {
            jsonMerchant.add("" + merchant.getId());
        }

        return jsonMerchant;
    }
}

public class UserSubscriptionAnnotation {  
    String name;
    String email;
    int age;
    boolean isDeveloper;

    // new!
    @JsonAdapter(MerchantListSerializer.class)
    List<Merchant> merchantList;
}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容