在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。