java json 空值_Java去除json数据中的null空值问题

该博客介绍了一个Java方法,用于从JSON对象中删除空值。通过遍历JSON对象和数组,检查每个值是否为空,并递归处理嵌套的JSON对象和数组,实现了清理JSON数据中的null和空字符串。
摘要由CSDN通过智能技术生成

package com.dunyun.openapi.util.json;

import java.util.ArrayList;

import java.util.List;

import com.alibaba.fastjson.JSONArray;

import com.alibaba.fastjson.JSONObject;

import com.dunyun.platform.util.StringUtil;

public class RemoveNullAttr {

public static void main(String[] args){

String s="{\"employees\": [{ \"firstName\":\"\" , \"lastName\":\"Doe\" },{ \"firstName\":\"\" , \"lastName\":\"Smith\" },{ \"firstName\":\"Peter\" , \"lastName\":\"Jones\" }]}";

String a="{ \"firstName\":\"John\" , \"lastName\":\"\" }";

String b="{ \"firstName\":\"\" , \"lastName\":\"Doe\" }";

String test="{\"ka\":\"va\",\"kb\":{\"kbk\":\"kbv\",\"kbkk\":\"\",\"kbkkk\":{\"aaa\":\"bbb\",\"bbb\":\"\"},\"suzu\":[{\"sz\":\"sz\",\"szk\":\"\"}]},\"kc\":\"kcv\"}";

JSONObject js=JSONObject.parseObject(test);

RemoveNullAttr r=new RemoveNullAttr();

Object o=r.traverseJson(js);

System.out.println(o);

}

private Object traverseJson(Object json) {

// check null

if (json == null) {

return null;

}

try {

if (json instanceof JSONObject) {// if json is a Map

JSONObject jsonObj = (JSONObject)json;

List keyList=new ArrayList();

for(String k:jsonObj.keySet()){

String value=jsonObj.get(k).toString();

if(StringUtil.isEmpty(value)){

keyList.add(k);

//jsonObj.remove(k);

}else{

if(isJsonObj(value)){

jsonObj.put(k, traverseJson(JSONObject.parseObject(value)));

}else{if(isJsonArr(value)){

//value=;

jsonObj.put(k, traverseJson(JSONArray.parseArray(value))) ;

}

}

}

}

for(String k:keyList){

jsonObj.remove(k);

}

return jsonObj;

}

else if (json instanceof JSONArray) {// if json is an Array

JSONArray jsonArr = (JSONArray)json;

int len = jsonArr.size();

for (int i = 0; i < len; ++i) {

// TODO: do something here

jsonArr.set(i, traverseJson(jsonArr.get(i)));

}

// return retArr;

//

// } else {// if json is just a raw element

//

// // TODO: do something here

// return json;

return jsonArr;

//

}

} catch (Exception e) {

e.printStackTrace();// deal Exception or throw it

}

return null;

}

public boolean isJsonObj(Object o){

try{

JSONObject js=JSONObject.parseObject(o.toString());

return true;

}catch(Exception e){

return false;

}

}

public boolean isJsonArr(Object o){

try{

JSONArray js=JSONArray.parseArray(o.toString());

return true;

}catch(Exception e){

return false;

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值