Gson如何排除JsonSerializer中的某些字段

我只需要更改一个字段,我想要具有dafault值的另一个字段,但是使用此代码,我在输出中仅包含一个字段-我在JsonSerializer中编写的一个字段,但是我需要具有所有字段并且只有一个为了改变。有一种属性方法吗?

GsonBuilder gson = new GsonBuilder().serializeNulls();
gson.registerTypeAdapter(TripCardView.class,new JsonSerializer<TripCardView>() {
    @Override
    public JsonElement serialize(TripCardView src,Type typeOfSrc,JsonSerializationContext context) {
        JsonObject jObj = new JsonObject();
        jObj.add("numberShortYear",new JsonPrimitive(src.getNumberShortYear()));
        return jObj;
    }
});
jsonResponse.add("aaData",gson.setDateFormat("dd.MM.yyyy").create().toJsonTree(result));
siqi111 回答:Gson如何排除JsonSerializer中的某些字段

只有一些小改动,请参见下面的代码中的注释:

gson.registerTypeAdapter(TripCardView.class,new JsonSerializer<TripCardView>() {
    // You need to create a new Gson in your serializer because calling original contex
    // would call this serializer again and cause stack overflow because of recursion
    private Gson gson = new GsonBuilder().setDateFormat("dd.MM.yyyy").create();
    @Override
    public JsonElement serialize(TripCardView src,Type typeOfSrc,JsonSerializationContext context) {
        // You need to serialize the original object to have its fields populated 'default'
        JsonElement result = gson.toJsonTree(src);
        // After that it is just to add the extra field with value from method call
        result.getAsJsonObject().add("numberShortYear",new JsonPrimitive(src.getNumberShortYear()));
        return result;
    }
});
本文链接:https://www.f2er.com/2900212.html

大家都在问