我有类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对象,但根据客户的请求,我只需要其中的一部分。
发布于 2018-08-06 03:22:13
我自己回答我的问题。解决方案非常简单。
我创建了一个特殊的方法filter,它创建了一个对象的临时副本,该对象具有合适的字段值。所以我序列化了这个对象,而不是原来的那个。
发布于 2018-08-06 02:20:13
如果你想排除object的某些字段,你可以通过下面的代码来实现:
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")
编辑列表,然后使用相同的对象。
https://stackoverflow.com/questions/51697032
复制相似问题