JSON 필터 속성, 속성 변환기 설정 방법

솔리드 클래스를 먼저 정의하려면 다음과 같이 하십시오.
package com.zf.vo;
import java.sql.Timestamp;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.zf.control.JsonTimestampFormater;

public class Person {
  
	private String name ; 
	
	@JsonIgnore  //         json String   ,     
	private int age ;
	
	@JsonSerialize(using = JsonTimestampFormater.class)         //         Json     ,                

	private Timestamp birthday ;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
	public Timestamp getBirthday() {
		return birthday;
	}
	      
	public void setBirthday(Timestamp birthday) {
		this.birthday = birthday;
	}
	
}

유형 변환기는 다음과 같이 정의됩니다.
package com.zf.control;

import java.io.IOException;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;

public class JsonTimestampFormater extends JsonSerializer<Timestamp> {
	private final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
	@Override
	public void serialize(Timestamp value, JsonGenerator jgen,
			SerializerProvider sp) throws IOException,
			JsonProcessingException {
		jgen.writeString(sdf.format(value));
	}

}

테스트 클래스는 다음과 같습니다.
package com.zf.test;

import java.io.IOException;
import java.sql.Timestamp;

import com.fasterxml.jackson.core.JsonGenerationException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.zf.vo.Person;

public class Test {
	
	public static void main(String[] args) throws JsonGenerationException, JsonMappingException, IOException {
		Person person = new Person();
		person.setAge(19);
		person.setName("xxxxx");     
		person.setBirthday(new Timestamp(System.currentTimeMillis()));
		
		ObjectMapper mapper = new ObjectMapper();      
		String jsonstr = mapper.writeValueAsString(person);
		System.out.println(jsonstr);
		
	}
	
}

인쇄 결과
{"name":"xxxxx","birthday":"2012-08-03 03:05:06"}

좋은 웹페이지 즐겨찾기