天天看點

JsonUtil和JsonResult

在Java背景傳回給前端資料時候轉成json格式,JsonUtil就是轉換工具:

JsonUtil

public class JSONUtil {
	
	private static final SerializerFeature[] features = {
			SerializerFeature.SkipTransientField,// 過濾transient字段
            SerializerFeature.WriteDateUseDateFormat,// 使用日期格式化
  		    SerializerFeature.WriteMapNullValue, // 輸出空置字段
			SerializerFeature.WriteNullListAsEmpty, // list字段如果為null,輸出為[],而不是null
			SerializerFeature.WriteNullBooleanAsFalse, // Boolean字段如果為null,輸出為false,而不是null
			SerializerFeature.WriteNullStringAsEmpty // 字元類型字段如果為null,輸出為"",而不是null
			
	};
	//修改時間格式
	public static String JsonString(Object object) {
		JSON.DEFFAULT_DATE_FORMAT = "yyyy-MM-dd";
		return JSONObject.toJSONString(object,
				SerializerFeature.SkipTransientField,// 過濾transient字段
	            SerializerFeature.WriteDateUseDateFormat,// 使用日期格式化
	  		    SerializerFeature.WriteMapNullValue, // 輸出空置字段
				SerializerFeature.WriteNullListAsEmpty, // list字段如果為null,輸出為[],而不是null
				SerializerFeature.WriteNullBooleanAsFalse, // Boolean字段如果為null,輸出為false,而不是null
				SerializerFeature.WriteNullStringAsEmpty);// 字元類型字段如果為null,輸出為"",而不是null );
	}
	/**
	 *zhege you went 
	 * @param object
	 * @return
	 */
	public static String toJsonString(Object object) {
		return JSONObject.toJSONString(object, features);
	}

	public static String toJsonpString(Object obj, String callback) {
		return callback + "(" + toJsonString(obj) + ")";
	}

	public static Object parseObjectOrArray(String json, Class<?> clazz) {
		Object o = JSON.parse(json);
		if (o instanceof JSONArray) {
			o = JSONObject.parseArray(json, clazz);
		} else {
			o = JSONObject.parseObject(json, clazz);
		}
		return o;
	}

	public static <T> T parseObject(String json, Class<T> clazz) {
		return JSONObject.parseObject(json, clazz);
	}

	public static <T> List<T> parseArray(String json, Class<T> clazz) {
		return JSONObject.parseArray(json, clazz);
	}

	/**
	 * 該方法在某些特殊場景使用,如果要轉數組,可以使用parseArray方法
	 * 
	 * @param json
	 * @return
	 */
	public static Object[] parseObjectArray(String json) {
		List<Object> list = JSONObject.parseArray(json, Object.class);
		return list.toArray();
	}
}
           

JsonResult:

/**
 * 傳回json封裝對象<br>
 * 如果失敗code = -1 ,如果成功 code = 1,特殊情況請自己定義傳回碼<br >
 * 如果錯誤資訊,code小于0<br >
 * 如果成功資訊,code大于0
 */
public class JsonResult {
	protected Integer code;
	protected String message;
	protected Object rows;

	public Integer getCode() {
		return code;
	}

	public void setCode(Integer code) {
		this.code = code;
	}

	public String getMessage() {
		return message;
	}

	public void setMessage(String message) {
		this.message = message;
	}

	public Object getRows() {
		return rows;
	}

	public void setRows(Object rows) {
		this.rows = rows;
	}

	public JsonResult() {
		this.code = 0;
		this.message = null;
		this.rows = null;
	}

	public JsonResult(Integer code, String message, Object rows) {
		this.code = code;
		this.message = message;
		this.rows = rows;
	}
}
           

在java的Controller調用:

@RequestMapping(value = "datamonitor/increatedata", produces = "application/json;charset=UTF-8")
    public String increatedata(String callback) {
        PageData pd = new PageData();
        pd = this.getPageData();
        List<PageData> list=null;
        try {
            list=dataMonitorService.getDataList(pd);
            return JSONUtil.toJsonpString(new JsonResult(1, "成功!", list),callback);//跨域時候使用的Jsonp
        } catch (Exception e) {
            e.printStackTrace();
            logger.error("錯誤:"+e.toString());
            return JSONUtil.toJsonString(new JsonResult(-1, "失敗:伺服器内部錯誤!", null));
        }
    }
           

正常傳回時候使用JsonUtil.toJsonString就可以了,跨域時候使用的JsonUtil.toJsonpString。