首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JAVA语言。格森。如何将参数传递给toJson()?

JAVA语言。格森。如何将参数传递给toJson()?
EN

Stack Overflow用户
提问于 2018-08-06 02:12:56
回答 2查看 285关注 0票数 0

我有类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对象,但根据客户的请求,我只需要其中的一部分。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-06 03:22:13

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

我创建了一个特殊的方法filter,它创建了一个对象的临时副本,该对象具有合适的字段值。所以我序列化了这个对象,而不是原来的那个。

票数 0
EN

Stack Overflow用户

发布于 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")编辑列表,然后使用相同的对象。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51697032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档