ToolsFastJson.java 4.68 KB
package com.taover.util;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

public class ToolsFastJson {
	
	public static JSONObject getPreviewObjArr(JSONObject originExcelData, int arrMaxSize) {
		JSONObject previewObj = new JSONObject();
		if(originExcelData != null && !originExcelData.isEmpty()) {
			for(String keyItem: originExcelData.keySet()) {
				JSONArray dataItem = originExcelData.getJSONArray(keyItem);
				int maxSize = dataItem.size() > arrMaxSize ? arrMaxSize : dataItem.size();
				JSONArray dataItemShunk = new JSONArray();
				for(int i=0; i<maxSize; ++i) {
					dataItemShunk.add(dataItem.getJSONArray(i));
				}
				previewObj.put(keyItem, dataItemShunk);
			}	
		}
		return previewObj;
	}
	
	public static Map<String, List<List<Object>>> translateObjArrArr(JSONObject previewOriginExcelDatasJson) {
		Map<String, List<List<Object>>> originDataMap = new HashMap<String, List<List<Object>>>();
		if(previewOriginExcelDatasJson != null && !previewOriginExcelDatasJson.isEmpty()) {
			for(String keyItem: previewOriginExcelDatasJson.keySet()) {
				originDataMap.put(keyItem, translateArrArr(previewOriginExcelDatasJson.getJSONArray(keyItem)));
			}	
		}
		return originDataMap;
	}
	
	public static List<List<Object>> translateArrArr(JSONArray jsonArray){
		if(jsonArray == null) {
			return null;
		}
		List<List<Object>> resultList = new ArrayList<List<Object>>();
		for (int i = 0; i < jsonArray.size(); i++) {
			ArrayList<Object> columList = new ArrayList<Object>();
			JSONArray columArray =  jsonArray.getJSONArray(i);
			for (int j = 0; j < columArray.size(); j++) {
				columList.add(columArray.getString(j));
			}
			resultList.add(columList);
		} 
		return resultList;
	}

	public static boolean isJsonNull(Object data){
		if(data == null){
			return true;
		}
		if(!(data instanceof String) && data.toString().equals("null")){
			return true;
		}
		return false;
	}
	
	public static void removeJsonNull(JSONObject data){
		if(data == null){
			return;
		}
		Iterator<String> keyIter = data.keySet().iterator();
		List<String> removeKeys = new ArrayList<String>(data.size());
		while(keyIter.hasNext()){
			String keyItem = keyIter.next();
			Object value = data.get(keyItem);
			
			if(isJsonNull(value)) {
				removeKeys.add(keyItem);
				continue;
			}
			
			if(value instanceof JSONObject){
				removeJsonNull((JSONObject)value);
			}else if(value instanceof JSONArray){
				removeJsonNull((JSONArray)value);
			}
		}
		
		for(String rKey: removeKeys) {
			data.remove(rKey);
		}
	}

	public static void removeJsonNull(JSONArray dataArr){
		if(dataArr == null){
			return;
		}
		for(int i=0; i<dataArr.size(); ++i){
			Object dataItem = dataArr.get(i);
			if(isJsonNull(dataItem)){
				dataArr.remove(i);
				--i;
				continue;
			}
			
			if(dataItem instanceof JSONObject){
				removeJsonNull((JSONObject)dataItem);
			}else if(dataItem instanceof JSONArray){
				removeJsonNull((JSONArray)dataItem);
			}
		}
	}
	
	public static void replaceJsonNull(JSONObject data, Object target){
		if(data == null){
			return;
		}
		Iterator<String> keyIter = data.keySet().iterator();
		while(keyIter.hasNext()){
			String keyItem = keyIter.next();
			Object value = data.get(keyItem);
			
			if(isJsonNull(value)) {
				data.put(keyItem, target);
				continue;
			}
			
			if(value instanceof JSONObject){
				replaceJsonNull((JSONObject)value, target);
			}else 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){
			Object dataItem = dataArr.get(i);
			if(isJsonNull(dataItem)){
				dataArr.set(i, target);
				continue;
			}
			
			if(dataItem instanceof JSONObject){
				replaceJsonNull((JSONObject)dataItem, target);
			}else if(dataItem instanceof JSONArray){
				replaceJsonNull((JSONArray)dataItem, target);
			}
		}
	}
	
	public static void main(String[] args){
		//JSONObject data = JSONObject.parseObject("{\"message\":\"鏂囧瓧瑙f瀽鎴愬姛\",\"status\":true,\"statusCode\":\"null\",\"result\":{\"items\":[{\"district\":\"闅嗗寲鍘縗\",\"city\":\"鎵垮痉甯俓\",\"province\":\"娌冲寳鐪乗\",\"phone\":\"13621051230\",\"name\":{\"first_name\":\"wang\",\"second_name\":\"bin\",\"full_name\":null},\"address\":\"涓滈樋瓒呮潙\"}]}}");
		//JSONObject data = JSONObject.parseObject("{\"full_name\":null,\"statusCode\":\"null\"}");
		JSONArray data = JSONArray.parseArray("[null,\"null\"]");
		//removeJsonNull(data);
		replaceJsonNull(data, "");
		System.out.println(data.toString());
	}
}