JSONプロファイルによる時間属性のフォーマット([object Object Object]の問題解決)
2815 ワード
前の时间のプロジェクトの実戦、1つの问题に出会って、バックグラウンドはJSONを通じて(通って)データ交换のフォーマットを変えて、それからフロントで结果を出力する时、対象の中の时间は意外にも[object Object Object]で、长い间考えて、ネット上の资料を调べて、やっと解决方法を探し当てます:
キーコードは次のとおりです.
JSON時間処理のツール類コードは以下の通りである.
これでJSON形式の時間をフロントページでフォーマット出力できるようになります
try {
HttpSession session = request.getSession();
Employee employee = (Employee)session.getAttribute("employee");
int empId = employee.getEmpId();
response.setContentType("text/html;charset=UTF-8");
JsonConfig config = new JsonConfig();
config.setIgnoreDefaultExcludes(false);
config.registerJsonValueProcessor(java.util.Date.class, new JsonDateValueProcessor("yyyy-MM-dd"));
List leaveApplicationList = leaveApplicationService.findByEmpId(empId);
JSONArray resultArray = JSONArray.fromObject(leaveApplicationList,config);
String lList = "{\"total\":"+leaveApplicationService.personalTotalSize(empId)+",\"rows\":"+resultArray+"}";
PrintWriter out = response.getWriter();
out.write(lList);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
キーコードは次のとおりです.
JsonConfig config = new JsonConfig();
config.setIgnoreDefaultExcludes(false);
config.registerJsonValueProcessor(java.util.Date.class, new JsonDateValueProcessor("yyyy-MM-dd"));
List leaveApplicationList = leaveApplicationService.findByEmpId(empId);
JSONArray resultArray = JSONArray.fromObject(leaveApplicationList,config);
String lList = "{\"total\":"+leaveApplicationService.personalTotalSize(empId)+",\"rows\":"+resultArray+"}";
JSON時間処理のツール類コードは以下の通りである.
package com.ghost.util;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import net.sf.json.JsonConfig;
import net.sf.json.processors.JsonValueProcessor;
public class JsonDateValueProcessor implements JsonValueProcessor {
private String format ="yyyy-MM-dd";
public JsonDateValueProcessor() {
super();
}
public JsonDateValueProcessor(String format) {
super();
this.format = format;
}
@Override
public Object processArrayValue(Object paramObject,
JsonConfig paramJsonConfig) {
return process(paramObject);
}
@Override
public Object processObjectValue(String paramString, Object paramObject,
JsonConfig paramJsonConfig) {
return process(paramObject);
}
private Object process(Object value){
if(value instanceof Date){
SimpleDateFormat sdf = new SimpleDateFormat(format,Locale.CHINA);
return sdf.format(value);
}
return value == null ? "" : value.toString();
}
}
これでJSON形式の時間をフロントページでフォーマット出力できるようになります