JAVA。 GSON。如何将参数传递给toJson()?

时间:2018-08-05 18:12:56

标签: java gson

我有WorldModel类,并且具有ArrayList字段国家/地区,我需要将json的序列号不是所有国家/地区,而是仅由客户端请求。

有什么方法可以将参数传递给toJson()函数吗?一些数组或列表? 仅序列化考虑条件的字段。

编辑:添加了用例代码:

@ResponseBody
@RequestMapping(value = "/getWorldModel", method = RequestMethod.GET)
public String getInfrastructure(Model model, @RequestParam(value = "countries", required = true) String countries) {

    Gson jsonCTS = jsonBuilder.fromWorldModelToJson();
    String jCTS = jsonCTS.toJson(worldModel);

    return jCTS;
}

我对有很多国家的WorldModel worldModel对象进行了序列化,但根据客户的要求,我只需要其中一些。

2 个答案:

答案 0 :(得分:1)

如果要排除对象的某些字段,可以通过以下代码进行操作:

Gson gson = new GsonBuilder()
        .addSerializationExclusionStrategy(new ExclusionStrategy() {
            @Override
            public boolean shouldSkipField(FieldAttributes f) {
                //your condition
                return f.getName().equal("test");
            }

            @Override
            public boolean shouldSkipClass(Class<?> aClass) {
                return false;
            }
        })
        .create();

如果要排除列表中的某些元素,可以简单地通过list.remove("test")编辑列表,然后使用相同的对象。

答案 1 :(得分:0)

我自己回答我的问题。 解决方案非常简单。

我创建了特殊的方法过滤器,该过滤器创建了具有适当字段值的对象的时间重复项。所以我序列化了这个对象,而不是原来的对象。