들어오는 JSON에서 영역 오프셋을 포함하는 ISO8601 호환 datetime 필드가 있습니다. 이 오프셋을 보존하고 싶습니다만, 불행히도 잭슨의 GMT/UTC 기본값은이 필드를 역 직렬화하는 동안입니다 (내가 이해 한 내용은 http://wiki.fasterxml.com/JacksonFAQDateHandling입니다).OffsetDateTime을 deserialize하는 동안 오프셋을 보존하는 방법
java.lang.AssertionError: expected:<-04:00> but was:<Z>
는 어떻게 반환 OffsetDateTime 원래 오프셋 포함 할 수 있습니다 :
@RunWith(JUnit4.class)
public class JacksonOffsetDateTimeTest {
private ObjectMapper objectMapper;
@Before
public void init() {
objectMapper = Jackson2ObjectMapperBuilder.json()
.modules(new JavaTimeModule())
.featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
.build();
}
@Test
public void test() throws IOException {
final String json = "{ \"date\": \"2000-01-01T12:00:00.000-04:00\" }";
final JsonType instance = objectMapper.readValue(json, JsonType.class);
assertEquals(ZoneOffset.ofHours(-4), instance.getDate().getOffset());
}
}
public class JsonType {
private OffsetDateTime date;
// getter, setter
}
내가 여기서 뭘되어지고있어?
저는 잭슨 2.8.3에 있습니다.
신난다, 고마워! 잭슨 내부를 파고 들었을 때, 혼자서 알아 냈습니다. –