当前位置: 首页 > 面试题库 >

Java 8 LocalDate Jackson格式

荣波
2023-03-14
问题内容

对于java.util.Date当我做

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd/MM/yyyy")  
  private Date dateOfBirth;

然后在发送JSON请求时

{ {"dateOfBirth":"01/01/2000"} }  

有用。

我应如何针对Java 8的LocalDate字段执行此操作?

我尝试过

@JsonDeserialize(using = LocalDateDeserializer.class)  
@JsonSerialize(using = LocalDateSerializer.class)  
private LocalDate dateOfBirth;  

没用

有人可以让我知道这样做的正确方法是什么。

以下是依赖项

<dependency>
    <groupId>org.jboss.resteasy</groupId>
    <artifactId>jaxrs-api</artifactId>
     <version>3.0.9.Final</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.jaxrs</groupId>
    <artifactId>jackson-jaxrs-json-provider</artifactId>
    <version>2.4.2</version>
</dependency>
<dependency>
    <groupId>com.wordnik</groupId>
    <artifactId>swagger-annotations</artifactId>
    <version>1.3.10</version>
</dependency>

问题答案:

我从来没有能够使用注释使它简单地工作。为了使其正常工作,我创建了一个ContextResolverfor ObjectMapper,然后添加JSR310Moduleupdate:现在JavaTimeModule改为),以及另外一个警告,那就是需要将write-date-as-timestamp设置为false。有关更多信息,请参见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。发生了什么事,我得到了一个N​​oClassDefFound 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
Result: {“birthDate”:”2015-03-01”}

curl -v -POST -H “Content-Type:application/json” -d “{"birthDate":"2015-03-01"}” http://localhost:8080/api/person
Result: 2015-03-01`



 类似资料:
  • 我正在使用ColdFusion和SpreadsheetNew、SpreadsheetAddRow、SpreadsheetFormatRow等函数创建Excel文件。根据我在这里阅读的文档,它们是颜色和fgColor的属性。我有点困惑两者之间的区别。一个是文本颜色,另一个是背景颜色吗?我一直在使用fgColor来设置行的背景颜色。 我的主要问题是,根据文档,我可以在颜色类作为我的颜色。然而,我真的需

  • 通过 Matplotlib axes 对象提供的 grid() 方法可以开启或者关闭画布中的网格(即是否显示网格)以及网格的主/次刻度。除此之外,grid() 函数还可以设置网格的颜色、线型以及线宽等属性。 grid() 的函数使用格式如下: grid(color='b', ls = '-.', lw = 0.25) 参数含义如下: color:表示网格线的颜色; ls:表示网格线的样式; lw:

  • 问题内容: 我正在创建一个HTML表,将在Excel中作为电子表格打开。我可以使用哪种HTML标记或CSS样式“讲述” Excel以将单元格的内容显示为文本? 问题答案: 您可以将格式应用于数字,文本,日期等的单元格。 请参阅我以前关于此的答案:HTML toExcel:如何告诉Excel将列视为数字? (已调整的代码段) 如果将CSS类添加到页面: 并在您的TD上拍那些课,行得通吗?

  • 編輯格式的設計,將焦點放在「簡潔易用」與「易讀性」。 GitBook 使用 Markdown 這種輕量級標記語法作為編輯格式的設計基礎。 在包含實際內容的檔案之外,GitBook 添加了一些額外的參照檔: README:一本書的介紹文字。 SUMMARY:定義章節的架構與順序。 LANGS:多種翻譯版本的設定。 GLOSSARY:詞彙表與定義描述。 除了內容檔案外,一本書至少需要添加 README

  • 缩进 小技巧 缩进两个空格,没有制表符。 在代码块之间请使用空行以提升可读性。缩进为两个空格。无论你做什么,请不要使用制表符。对于已有文件,保持已有的缩进格式。 行的长度和长字符串 小技巧 行的最大长度为80个字符。 如果你必须写长度超过80个字符的字符串,如果可能的话,尽量使用here document或者嵌入的换行符。长度超过80个字符的文字串且不能被合理地分割,这是正常的。但强烈建议找到一个

  • 本文档是一个正在进展的工作,在具体实现过程中将会有所改变。详细信息请查看 现状 页面。 介绍 JSON API 是数据交互规范,用以定义客户端如何获取与修改资源,以及服务器如何响应对应请求。 JSON API设计用来最小化请求的数量,以及客户端与服务器间传输的数据量。在高效实现的同时,无需牺牲可读性、灵活性和可发现性。 JSON API需要使用JSON API媒体类型(application/vn

  • 我们可以看到格式化就是通过格式字符串得到特定格式: format!("{}", foo) -> "3735928559" format!("0x{:X}", foo) -> "0xDEADBEEF" format!("0o{:o}", foo) -> "0o33653337357" 根据使用的参数类型,同样的变量(foo)能够格式化成不同的形式:X, o 和未指定形式。 这个格式化的功能是通过 t

  • 我的FXML中有一个DatePicker,我需要Date将其插入我的SQL数据库。我想格式化我的Date,但它不起作用。 这就是我得到的错误。 我还是个初学者。在过去的3到4个月里,我一直使用Java。我正在尽力提高。