springmvc 학습 노트-json 의 날짜 형식 문 제 를 되 돌려 주 는 해결 방법
(1)json 데이터 출력
springmvc 에서 jackson-mapper-asl 을 사용 하면 json 출력 을 할 수 있 습 니 다.설정 에 있어 서 몇 가지 가 있 습 니 다.
1.화면 음악:annotation-driven 사용
2.의존 관리 에 잭 슨-mapper-asl 추가
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>${jackson.version}</version>
</dependency>
3.주석 사용@ResponseBody화면 음악:annotation-driven 은 기본적으로 json 컨버터 를 불 러 왔 습 니 다.우 리 는 위의 의존 패 키 지 를 추가 한 후에 주석@ResponseBody 를 사용 하여 json 데 이 터 를 되 돌려 줄 수 있 습 니 다.예 를 들 어:
@RequestMapping("json")
@ResponseBody
public List<User> userList(ModelMap modelMap){
UserExample example = new UserExample();
example.createCriteria().andUsernameIsNotNull();
List<User> users = userMapper.selectByExample(example);
return users;
}
(2)json 출력 날짜 형식 포맷위 에서 json 을 출력 했 지만 json 의 date 형식의 속성 은 모두 long 값 입 니 다.페이지 에서 꺼 내 는 것 이 외국 의 날짜 형식 인 것 처럼 우 리 는 날짜 의 형식 을 원 하 는 형식 으로 변환 하 는 형식 을 추가 해 야 합 니 다.yyy-MM-dd.
1.@JSonFormat 사용(pattern="yyy-MM-dd HH:mm:ss",timezone="GMT+8")
실체 클래스 의 getter 방법 에@JSonFormat(pattern="yyy-MM-dd HH:mm:ss",timezone="GMT+8")을 추가 하면 json 의 날 짜 를 포맷 할 수 있 습 니 다.
첫 번 째 시 도 는 항상 실 패 했 습 니 다.나중에 완전한 의존 가방 을 추가 한 후에 성공 하려 면 다음 과 같은 몇 가지 의존 도 를 추가 해 야 합 니 다.
<!-- json -->
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson.core.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.core.version}</version>
</dependency>
<properties>
<jackson.version>1.9.13</jackson.version>
<jackson.core.version>2.4.2</jackson.core.version>
</properties>
장점 은 간단 하고 편리 하 며,단점 은 모든 필요 한 속성의 getter 방법 에 추가 해 야 한 다 는 것 이다.거시적 으로 보면 비교적 번 거 롭 지만 실제 개발 에서 도 한 줄 의 코드 만 있 는 일 은 유일 하 게 좋 지 않 은 것 은 my batis 가 실체 류 를 자동 으로 생 성하 여 덮어 쓰 는 것 이다.2.ObjectMapper 를 계승 하여 json 문자열 을 되 돌려 줍 니 다.
위의 방법 에서 간단 하고 편리 하지만 단점 도 뚜렷 하 다.자동 생 성 코드 는 실체 류 를 덮어 쓰 고 모든 날짜 속성 은 수 동 으로 추가 해 야 하 며 실제 날짜 속성 은 보편적으로 필요 하 다.따라서 전체 적 으로 처리 하고 격식 을 통일 할 수 있다.데이터베이스 에 있 는 date 와 timestamp 는 my batis 에서 date 대상 으로 변 환 됩 니 다.생일 이 일 까지 정확 하고 시간 이 초 까지 정확 한 형식 규범 은 디 스 플레이 층 을 처리 할 수 있다.yyy-MM-dd HH:mm:ss 로 통일
MappingJackson HttpMessageConverter 는 주로 ObjectMapper 를 통 해 json 문자열 을 되 돌려 줍 니 다.여기 서 우 리 는 이 종 류 를 계승 하여 JSonSerializer
2.1 하위 클래스 계승 ObjectMapper 작성
package com.demo.common.util.converter;
import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.JsonProcessingException;
import org.codehaus.jackson.map.JsonSerializer;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.SerializerProvider;
import org.codehaus.jackson.map.ser.CustomSerializerFactory;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* Date json
* Created by Administrator on 2016/2/14.
*/
public class CustomJsonDateConverter extends ObjectMapper {
public CustomJsonDateConverter(){
CustomSerializerFactory factory = new CustomSerializerFactory();
factory.addGenericMapping(Date.class, new JsonSerializer<Date>(){
@Override
public void serialize(Date value,
JsonGenerator jsonGenerator,
SerializerProvider provider)
throws IOException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
jsonGenerator.writeString(sdf.format(value));
}
});
this.setSerializerFactory(factory);
}
}
2.2 spring 파일 설정
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="objectMapper" ref="customObjectMapper"></property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
<bean id="customObjectMapper" class="com.demo.common.util.converter.CustomJsonDateConverter"></bean>
2.3 디 스 플레이 층 이 날짜 형식 길 이 를 자율 적 으로 결정 합 니 다.이 설정 은 이전@JSonFormat 과 함께 사용 할 수 없습니다.전역 적 으로 날짜 형식 이 통일 되 었 기 때문에 날짜 와 datetime,timestamp 는 모두 하나의 형식 입 니 다.생일 등 date 필드 를 간소화 해 야 한다 면 디 스 플레이 층 에서 만 재단 할 수 있 습 니 다.
3.내 장 된 날짜 포맷 도구 사용
json 이 응답 하 는 날짜 형식 을 전역 적 으로 설정 하지만 이 방법 은@JSonFormat 과 공존 할 수 있 습 니 다.즉,전역 적 으로 형식 을 설정 할 수 있 고 특정한 수 요 는 주석 설정 을 사용 할 수 있 습 니 다.
3.1 spring 파일 설정
<mvc:annotation-driven>
<!-- responseBody -->
<mvc:message-converters>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="objectMapper">
<bean class="com.fasterxml.jackson.databind.ObjectMapper">
<property name="dateFormat">
<bean class="java.text.SimpleDateFormat">
<constructor-arg type="java.lang.String" value="yyyy-MM-dd HH:mm:ss" />
</bean>
</property>
</bean>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
3.2 특정한 날짜 설정
@JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
public Date getBirth() {
return birth;
}
3.3 최종 
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
springmvc application/octet-stream problemmistake: Source code: Solution: Summarize: application/octet-stream is the original binary stream method. If the convers...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.