两种方法,一种通用性高,一种性能好
实例JSON
{
"total": 1,
"columnArray": ["name","sex","age"],
"dataMap": {
"name": "姓名",
"sex": "性别",
"age": "年龄"
},
"list": [{
"name": "ltz",
"sex": "男",
"age": "18"
}]
}
一、通用方法
此方法可以去除JSONObject中指定的属性,包括在对象中,数组中,以及List中。
使用FastJSON,其他的应该也可以。
由于通用性,所以改方法性能较差。不建议在并发数大的场景使用。
1.工具类代码
/**
* JSON去除指定属性(属性值,数组中,对象中,List中)
* @param jsonObject 需处理JSON
* @param removeParams 去除属性名称
* @return
*/
public JSONObject jsonRemoveParams(JSONObject jsonObject, String removeParams){
// 获取所有一级Key
Set<String> keySet = jsonObject.keySet();
// 通过一级Key遍历
for (String key : keySet) {
JSONArray jsonArray;
try {
// 将一级值转换为数组
jsonArray = (JSONArray) jsonObject.get(key);
} catch (Exception e) {
// 转换失败,说明一级值不为数组
try {
// 尝试将一级值转换为对象
JSONObject jsonObject1 = (JSONObject) jsonObject.get(key);
// 删除对象中属性
jsonObject1.remove(removeParams);
} catch (Exception ex) {
// 转换失败,说明一级值为常量,循环结束
continue;
}
// 一级值不为数组,循环结束
continue;
}
// 一级值为数组,遍历List行去除
for (int i = 0; i < jsonArray.size(); i++) {
try {
// 尝试直接去除List中的对象值
((JSONObject) jsonArray.