Fastjson2对JSONArray类,跟对JSONObject一样,其实已经提供了相当多的方法,但是在使用当中,也往往感觉有点不够用…
一、究竟哪些情形,让我需要扩展JSONArray
为了让你对JSONArray有更多的了解,并先阅读:Fastjson1与Fastjson2的差别,深入简化的分析
- 作为传输对象,需要对特定的值做一定的处理,特别针对本系统经常使用的扩展属性props的操作
- 数据脱敏的操作,或者减少传输数据的数据量方面,这个是当直接返回实体javabean,做不到的,如黑白名单
- 可以理解JSONArray就是JSONObject的数组类型,鉴于JSONObject的扩展的必要性,JSONArray同样逼切
1.数据脱敏处理,添加黑白名单
原理相当于JSONObject的黑白名单处理一样,采用递归方式进行黑白名单过滤
//<Diy>1.白名单过滤
public JSONArray white(String... keys) {
if(keys.length > 0) {
JSONFilter.jsonFilter(this, JSONFilter.White(keys));
}
return this;
}
//<Diy>2.黑名单过滤
public JSONArray black(String... keys) {
if(keys.length > 0) {
JSONFilter.jsonFilter(this, JSONFilter.Black(keys));
}
return this;
}
其核心方法位于JSONFilter中,详情请参考该类。
2.统一新构面方法
跟JSONObject一样,初始化采用static方法
//<Diy>4. 静态构建方法
public static JSONArray builder() {
return new JSONArray();
}