JSON过滤对象中属性名相同(搜索的问题及答案)

本文介绍了一种使用JSON配置来精确过滤Java对象属性的方法。通过实现自定义的PropertyFilter,可以只过滤特定类中的指定属性,而不会影响到其他类中同名属性的序列化过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用JSON过滤对象中属性名相同时都会被过滤的情况,

我有一个需求:

                class  A {

                        private String a;

                        private B b;

                        //set/get方法省略

                 }

                class  B {

                        private String a;



                        //set/get方法省略

                 }



             //过滤不需要解析的属性

            JsonConfig config = new JsonConfig();

A target = new A();

config.setExcludes(new String[]{“a”});

JSONObject jsonObject = JSONObject.fromObject(target, config);

String out = jsonObject.toString();

这样后A类中过滤了a属性,同时对象b中的属性a也会被过滤掉,如果我只想过滤A类中的属性a,不想过来属性b对象中的属性a,要怎么写。关键就是这里属性名重了

采纳的答案:
JsonConfig config = new JsonConfig();
B b=new B();
b.setA(“a”);
A target = new A();

target.setA(“a”);
target.setB(b);

config.setJsonPropertyFilter( new PropertyFilter(){

public boolean apply(Object source/* 属性的拥有者 /, String name /属性名字/, Object value/ 属性值 */ ){
// return true to skip name
return source instanceof A&& name.equals(“a”);
}
});

JSONObject jsonObject = JSONObject.fromObject(target, config);

String out = jsonObject.toString();

      System.out.println(out);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值