当前位置 : 主页 > 编程语言 > c++ >

gson序列化对象(值为空也序列化、值为null转换为""、排除策略)

来源:互联网 收集:自由互联 发布时间:2021-07-03
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.NullStringToEmptyAd
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();
}
网友评论