JSON은 프로파일을 통해 시간 속성을 포맷합니다([object Object] 문제 해결).

2834 단어 JSON
얼마 전에 프로젝트가 실전에서 문제가 발생했는데 백그라운드에서 JSON을 통해 데이터 교환 형식을 바꾸고 백그라운드에서 결과를 출력할 때 대상 중의 시간이 [object Object]인 것으로 나타났다. 오랫동안 생각하고 인터넷 자료를 찾아보고 해결 방법을 찾았다.
		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 Time Process의 도구 클래스 코드는 다음과 같습니다.
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 포맷의 시간은 프론트 데스크톱 페이지에서 포맷 출력을 할 수 있다

좋은 웹페이지 즐겨찾기