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

2026-04-15 07:5211阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

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

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

Gson序列化对象,日期:2017年8月1日下午4:59:14,描述:/package com.huiw.core.uic.common.utils.gson; 导入Gson和GsonBuilder,使用NullStringToEmptyAdapter。

如何将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.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(值为空也序列化) *

*

* 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(); }

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

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

Gson序列化对象,日期:2017年8月1日下午4:59:14,描述:/package com.huiw.core.uic.common.utils.gson; 导入Gson和GsonBuilder,使用NullStringToEmptyAdapter。

如何将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.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(值为空也序列化) *

*

* 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(); }