UtilJSON.java 2.49 KB
package com.taover.util;

import java.util.Iterator;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

public class UtilJSON {
	public static void removeJsonNull(JSONObject data){
		if(data == null || data.isNullObject()){
			return;
		}
		Iterator<String> keyIter = data.keys();
		while(keyIter.hasNext()){
			String keyItem = keyIter.next();
			Object value = data.get(keyItem);
			
			if(isJsonNull(value)) {
				data.put(keyItem, "");
			}
			
			if(value instanceof JSONObject){
				removeJsonNull((JSONObject)value);
				continue;
			}
			
			if(value instanceof JSONArray){
				removeJsonNull((JSONArray)value);
			}
		}
	}
	
	public static boolean isJsonNull(Object data){
		if(data == null){
			return true;
		}
		if(!(data instanceof String) && data.toString().equals("null")){
			return true;
		}
		if(data instanceof JSONObject && ((JSONObject) data).isNullObject()){
			return true;
		}
		return false;
	}
	
	public static void removeJsonNull(JSONArray dataArr){
		if(dataArr == null){
			return;
		}
		for(int i=0; i<dataArr.size(); ++i){
			JSONObject dataItem = dataArr.optJSONObject(i);
			if(isJsonNull(dataItem)){
				dataArr.remove(i);
				continue;
			}
			removeJsonNull(dataItem);
		}
	}
	
	public static void replaceJsonNull(JSONObject data, Object target){
		if(data == null || data.isNullObject()){
			return;
		}
		Iterator<String> keyIter = data.keys();
		while(keyIter.hasNext()){
			String keyItem = keyIter.next();
			Object value = data.get(keyItem);
			
			if(isJsonNull(value)) {
				data.put(keyItem, target);
			}
			
			if(value instanceof JSONObject){
				replaceJsonNull((JSONObject)value, target);
				continue;
			}
			
			if(value instanceof JSONArray){
				replaceJsonNull((JSONArray)value, target);
			}
		}
	}
		
	public static void replaceJsonNull(JSONArray dataArr, Object target){
		if(dataArr == null){
			return;
		}
		for(int i=0; i<dataArr.size(); ++i){
			JSONObject dataItem = dataArr.optJSONObject(i);
			if(isJsonNull(dataItem)){
				dataArr.set(i, target);
				continue;
			}
			removeJsonNull(dataItem);
		}
	}
	
	public static void main(String[] args){
		JSONObject data = JSONObject.fromObject("{\"message\":\"文字解析成功\",\"status\":true,\"statusCode\":\"null\",\"result\":{\"items\":[{\"district\":\"隆化县\",\"city\":\"承德市\",\"province\":\"河北省\",\"phone\":\"13621051230\",\"name\":{\"first_name\":\"wang\",\"second_name\":\"bin\",\"full_name\":null},\"address\":\"东阿超村\"}]}}");
		removeJsonNull(data);
		System.out.println(data.toString());
	}
}