我正在努力学习格森,我正在与场外排斥作斗争。这是我的课
公共班级学生{
私人长id;
私有字符串firstName=“Philip”;
私有字符串middleName=“J.”;
私有字符串首字母=“P.F”;
私有字符串lastName=“Fry”;
私人国家;
出生的私人国家;
}
公营国家{
私人长id;
私有字符串名称;
私人物品或其他物品;
}
我可以使用GsonBuilder为字段名添加排除策略,如firstName或country,但我似乎无法排除某些字段的属性,如country.name
使用方法public boolean shouldSkipField(FieldAttributes fa),FieldAttributes不包含足够的信息,无法将字段与类似country.name的筛选器匹配
注:我想避免注释,因为我想改进这一点,并使用正则表达式过滤掉字段
编辑:我试图看看是否有可能模仿Struts2 JSON插件
使用Gson
<;拦截器ref name=“json”>;
<;param name=“enableSMD”>;正确</参数>;
<;param name=“excludeProperties”>;
login.password,
学生名单。*\.sin
</参数>;
</拦截器参考号>;
编辑:
我重新提出问题,补充了以下内容:
为了进一步澄清这个问题,我添加了第二个相同类型的字段。基本上我想排除country.name,但不排除countrOfBirth.name。我也不想把国家排除在外。
所以类型是相同的,这是我想要精确定位和排除的对象图中的实际位置
一般来说,任何不希望序列化的字段都应该使用“transient”修饰符,这也适用于json序列化程序(至少我使用过的一些字段,包括gson)
如果您不希望名称显示在序列化的json中,请给它一个transient关键字,例如:
私有瞬态字符串名称;