如何设置Gson序列化,使空值序列化、null转为空字符串并排除特定字段?

更新于
2026-10-12 07:13:13
2阅读来源:SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计479个文字,预计阅读时间需要2分钟。

如何设置Gson序列化,使空值序列化、null转为空字符串并排除特定字段?

使用Gson进行对象序列化 / YC 2017年8月1日 下午4:59:14 Description: /package com.huiw.core.uic.common.utils.gson; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.huiw.core.uic.common.adapter.NullStringToEmptyAdapter

gson序列化对象

/** *YC *2017年8月1日 下午4:59:14 *

Description:

*/ package com.huiw.core.uic.common.utils.gson; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.huiw.core.uic.common.adapter.NullStringToEmptyAdapterFactory; import com.huiw.core.uic.common.utils.converter.AnnotationExclusion; import com.huiw.core.uic.common.utils.converter.FieldExclusion; /** * @author YC 获取一个完美gson: * */ public class PerfectGson { /** * * YC 2017年8月1日 下午5:09:34 *

* Title: getGson *

*

* Description: *

完美gson具有如下功能:

*

* 1、serializeNulls(值为空也序列化) *

如何设置Gson序列化,使空值序列化、null转为空字符串并排除特定字段?

*

* 2、registerTypeAdapterFactory(new * NullStringToEmptyAdapterFactory())(值为null转换为"") *

*

* 3、.setExclusionStrategies(new TargetStrategy())(排除策略 ) *

* * @return */ public static Gson getGson() { return new GsonBuilder().serializeNulls() .registerTypeAdapterFactory(new NullStringToEmptyAdapterFactory()) .setExclusionStrategies(new AnnotationExclusion()).create(); } /** * * YC 2017年8月11日 下午2:39:33 *

* Title: getGson *

*

* Description: 带参 *

* * @param strs * @return */ public static Gson getGson(String[] strs) { return new GsonBuilder().serializeNulls() .registerTypeAdapterFactory(new NullStringToEmptyAdapterFactory()) .setExclusionStrategies(new FieldExclusion(strs)).create(); } } 值为空也序列化

public static Gson getGson(String[] strs) { return new GsonBuilder().serializeNulls().create(); } 值为null转换为""

public static Gson getGson(String[] strs) { return new GsonBuilder() .registerTypeAdapterFactory(new NullStringToEmptyAdapterFactory()) .create(); } /** *YC *2017年8月1日 下午4:41:21 *

Description:

*/ package com.huiw.core.uic.common.adapter; import com.google.gson.Gson; import com.google.gson.TypeAdapter; import com.google.gson.TypeAdapterFactory; import com.google.gson.reflect.TypeToken; /** * @author YC 将null转换为""工厂适配器 */ public class NullStringToEmptyAdapterFactory implements TypeAdapterFactory { @SuppressWarnings({ "unchecked", "hiding" }) public TypeAdapter create(Gson gson, TypeToken type) { Class rawType = (Class ) type.getRawType(); if (rawType != String.class) { return null; } return (TypeAdapter ) new StringNullAdapter(); } } /** *YC *2017年8月1日 下午4:36:50 *

Description:

*/ package com.huiw.core.uic.common.adapter; import java.io.IOException; import com.google.gson.TypeAdapter; import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonToken; import com.google.gson.stream.JsonWriter; /** * @author YC 将null转换为""适配器 */ public class StringNullAdapter extends TypeAdapter { @Override public String read(JsonReader reader) throws IOException { // TODO Auto-generated method stub if (reader.peek() == JsonToken.NULL) { reader.nextNull(); return ""; } return reader.nextString(); } @Override public void write(JsonWriter writer, String value) throws IOException { // TODO Auto-generated method stub if (value == null) { writer.nullValue(); return; } writer.value(value); } } 排除策略

public static Gson getGson() { return new GsonBuilder().setExclusionStrategies(new AnnotationExclusion()).create(); }

本文共计479个文字,预计阅读时间需要2分钟。

如何设置Gson序列化,使空值序列化、null转为空字符串并排除特定字段?

使用Gson进行对象序列化 / YC 2017年8月1日 下午4:59:14 Description: /package com.huiw.core.uic.common.utils.gson; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.huiw.core.uic.common.adapter.NullStringToEmptyAdapter

gson序列化对象

/** *YC *2017年8月1日 下午4:59:14 *

Description:

*/ package com.huiw.core.uic.common.utils.gson; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.huiw.core.uic.common.adapter.NullStringToEmptyAdapterFactory; import com.huiw.core.uic.common.utils.converter.AnnotationExclusion; import com.huiw.core.uic.common.utils.converter.FieldExclusion; /** * @author YC 获取一个完美gson: * */ public class PerfectGson { /** * * YC 2017年8月1日 下午5:09:34 *

* Title: getGson *

*

* Description: *

完美gson具有如下功能:

*

* 1、serializeNulls(值为空也序列化) *

如何设置Gson序列化,使空值序列化、null转为空字符串并排除特定字段?

*

* 2、registerTypeAdapterFactory(new * NullStringToEmptyAdapterFactory())(值为null转换为"") *

*

* 3、.setExclusionStrategies(new TargetStrategy())(排除策略 ) *

* * @return */ public static Gson getGson() { return new GsonBuilder().serializeNulls() .registerTypeAdapterFactory(new NullStringToEmptyAdapterFactory()) .setExclusionStrategies(new AnnotationExclusion()).create(); } /** * * YC 2017年8月11日 下午2:39:33 *

* Title: getGson *

*

* Description: 带参 *

* * @param strs * @return */ public static Gson getGson(String[] strs) { return new GsonBuilder().serializeNulls() .registerTypeAdapterFactory(new NullStringToEmptyAdapterFactory()) .setExclusionStrategies(new FieldExclusion(strs)).create(); } } 值为空也序列化

public static Gson getGson(String[] strs) { return new GsonBuilder().serializeNulls().create(); } 值为null转换为""

public static Gson getGson(String[] strs) { return new GsonBuilder() .registerTypeAdapterFactory(new NullStringToEmptyAdapterFactory()) .create(); } /** *YC *2017年8月1日 下午4:41:21 *

Description:

*/ package com.huiw.core.uic.common.adapter; import com.google.gson.Gson; import com.google.gson.TypeAdapter; import com.google.gson.TypeAdapterFactory; import com.google.gson.reflect.TypeToken; /** * @author YC 将null转换为""工厂适配器 */ public class NullStringToEmptyAdapterFactory implements TypeAdapterFactory { @SuppressWarnings({ "unchecked", "hiding" }) public TypeAdapter create(Gson gson, TypeToken type) { Class rawType = (Class ) type.getRawType(); if (rawType != String.class) { return null; } return (TypeAdapter ) new StringNullAdapter(); } } /** *YC *2017年8月1日 下午4:36:50 *

Description:

*/ package com.huiw.core.uic.common.adapter; import java.io.IOException; import com.google.gson.TypeAdapter; import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonToken; import com.google.gson.stream.JsonWriter; /** * @author YC 将null转换为""适配器 */ public class StringNullAdapter extends TypeAdapter { @Override public String read(JsonReader reader) throws IOException { // TODO Auto-generated method stub if (reader.peek() == JsonToken.NULL) { reader.nextNull(); return ""; } return reader.nextString(); } @Override public void write(JsonWriter writer, String value) throws IOException { // TODO Auto-generated method stub if (value == null) { writer.nullValue(); return; } writer.value(value); } } 排除策略

public static Gson getGson() { return new GsonBuilder().setExclusionStrategies(new AnnotationExclusion()).create(); }