Gson有像WRITE_NULL_MAP_VALUES(杰克逊)这样的东西吗?

时间:2013-08-05 16:46:54

标签: java json jackson gson

看着这个:http://jackson.codehaus.org/1.6.5/javadoc/org/codehaus/jackson/map/SerializationConfig.Feature.html

看起来像jackson json有一个配置,其中只有映射将其序列化的空值,但Gson似乎只有所有空值的序列化,或者根本没有

2 个答案:

答案 0 :(得分:3)

Gson gsonResponse = new GsonBuilder()
        .serializeNulls()
        .setPrettyPrinting()
        .create();

我认为您可能正在寻找serializeNulls()

您也可以创建一个customTypeAdapterFactory来处理特定于类的渲染。

Simpler use of TypeAdapterFactory

答案 1 :(得分:2)

这是朋友帮我提出的答案(几乎是PomPom的回答):

public static Gson createGson() {
    return new GsonBuilder().registerTypeAdapter(Map.class, new NullSerializingMapSerializer()).create();
}

public class NullSerializingMapSerializer implements JsonSerializer<Map> {
    private static final Gson gson = (new GsonBuilder()).serializeNulls().create();
    public JsonElement serialize(Map map, Type typeOfSrc, JsonSerializationContext context) {
        if(map == null) {
            return JsonNull.INSTANCE;
        }
        return new JsonPrimitive(gson.toJson(map));
    }
}