টীকাগুলি ব্যবহার করে আমি এটিকে সহজভাবে কাজ করতে সক্ষম হইনি। কাজ এটি পেতে, আমি একটি নির্মিত ContextResolverজন্য ObjectMapper, তারপর আমি যোগ JSR310Module( আপডেট: এখন এটা JavaTimeModuleপরিবর্তে ), আরও একটি সতর্কীকরণ, যা সেট লেখার-ডেট হিসাবে টাইমস্ট্যাম্প মিথ্যাতে করার প্রয়োজনীয়তা ছিল বরাবর। JSR310 মডিউলটির ডকুমেন্টেশনে আরও দেখুন । আমি কী ব্যবহার করেছি তার একটি উদাহরণ এখানে।
বশ্যতা
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.4.0</version>
</dependency>
দ্রষ্টব্য: আমি এর একটি সমস্যার মুখোমুখি হলাম যে jackson-annotationসংস্করণটি অন্য নির্ভরতা দ্বারা টানা হয়েছে, ব্যবহৃত সংস্করণ 2.3.2, যা দ্বারা প্রয়োজনীয় 2.4 বাতিল করে jsr310। যা ঘটেছিল আমি একটি NoClassDefFound পেয়েছিলাম ObjectIdResolver, এটি একটি 2.4 শ্রেণি। সুতরাং আমি কেবল অন্তর্ভুক্ত নির্ভরতা সংস্করণ লাইন করা প্রয়োজন
ContextResolver
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.datatype.jsr310.JSR310Module;
import javax.ws.rs.ext.ContextResolver;
import javax.ws.rs.ext.Provider;
@Provider
public class ObjectMapperContextResolver implements ContextResolver<ObjectMapper> {
private final ObjectMapper MAPPER;
public ObjectMapperContextResolver() {
MAPPER = new ObjectMapper();
// Now you should use JavaTimeModule instead
MAPPER.registerModule(new JSR310Module());
MAPPER.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
}
@Override
public ObjectMapper getContext(Class<?> type) {
return MAPPER;
}
}
রিসোর্স ক্লাস
@Path("person")
public class LocalDateResource {
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getPerson() {
Person person = new Person();
person.birthDate = LocalDate.now();
return Response.ok(person).build();
}
@POST
@Consumes(MediaType.APPLICATION_JSON)
public Response createPerson(Person person) {
return Response.ok(
DateTimeFormatter.ISO_DATE.format(person.birthDate)).build();
}
public static class Person {
public LocalDate birthDate;
}
}
পরীক্ষা
curl -v http://localhost:8080/api/person
ফলাফল: {"birthDate":"2015-03-01"}
curl -v -POST -H "Content-Type:application/json" -d "{\"birthDate\":\"2015-03-01\"}" http://localhost:8080/api/person
ফলাফল: 2015-03-01
এখানেও দেখুনজ্যাকএক্সবি সমাধানের জন্য ।
হালনাগাদ
JSR310Moduleজ্যাকসন সংস্করণ 2.7 এর হিসাবে অসমর্থিত হয়েছে। পরিবর্তে, আপনি মডিউল নিবন্ধন করা উচিত JavaTimeModule। এটি এখনও একই নির্ভরতা।