Gson:如何在没有注释的情况下从序列化中排除特定字段

我正在努力学习格森,我正在与场外排斥作斗争。这是我的课

公共班级学生{
私人长id;
私有字符串firstName=“Philip”;
私有字符串middleName=“J.”;
私有字符串首字母=“P.F”;
私有字符串lastName=“Fry”;
私人国家;
出生的私人国家;
}
公营国家{
私人长id;
私有字符串名称;
私人物品或其他物品;
}

我可以使用GsonBuilder为字段名添加排除策略,如firstNamecountry,但我似乎无法排除某些字段的属性,如country.name

使用方法public boolean shouldSkipField(FieldAttributes fa),FieldAttributes不包含足够的信息,无法将字段与类似country.name的筛选器匹配

注:我想避免注释,因为我想改进这一点,并使用正则表达式过滤掉字段

编辑:我试图看看是否有可能模仿Struts2 JSON插件

使用Gson

<拦截器ref name=“json”>
<param name=“enableSMD”>正确&lt/参数>
<param name=“excludeProperties”>
login.password,
学生名单。*\.sin
&lt/参数>
&lt/拦截器参考号>

编辑:
我重新提出问题,补充了以下内容:

为了进一步澄清这个问题,我添加了第二个相同类型的字段。基本上我想排除country.name,但不排除countrOfBirth.name。我也不想把国家排除在外。
所以类型是相同的,这是我想要精确定位和排除的对象图中的实际位置

一般来说,任何不希望序列化的字段都应该使用“transient”修饰符,这也适用于json序列化程序(至少我使用过的一些字段,包括gson)

如果您不希望名称显示在序列化的json中,请给它一个transient关键字,例如:

私有瞬态字符串名称;

Gson文档中有更多详细信息

发表评论