2

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

看起来jackson json有一个配置,其中只有地图将序列化其空值,但Gson似乎只对所有空值进行序列化,或者根本没有序列化

4

2 回答 2

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

我想你可能正在寻找 serializeNulls()

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

TypeAdapterFactory 的使用更简单

于 2013-08-06T15:09:29.063 回答
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));
    }
}
于 2013-08-06T19:05:10.503 回答