ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java – Restlet Jackson – 在哪里注册模块

2019-07-04 03:48:56  阅读:216  来源: 互联网

标签:java jackson restlet


我一直使用3月2.2 Restlet GA快照并使用Jackson来处理JSON转换.一切都很好,基本上是无形的.特别是,我甚至不需要实例化objectMapper.我也一直在使用Joda DateTime,这也很好.

本周,我正在升级到最新的2.2快照,它使用的是Jackson 2.0.4(而不是1.9).在那个版本的Jackson中,对Joda DateTime的支持已经转移到一个模块(杰克逊核心库中).

现在,当我运行我的测试代码时,我得到一个错误:

WARNING: Unable to convert a [application/json,UTF-8] representation into an object of class com.fourspires.api.dto.CommitmentDTO
com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "year" (class org.joda.time.DateTime), not marked as ignorable (2 known properties: , "chronology", "millis"])
 at [Source: org.restlet.engine.io.UnclosableInputStream@dcc5312; line: 1, column: 701] (through reference chain: com.fourspires.api.dto.CommitmentDTO["completeBy"]->org.joda.time.DateTime["year"])

当我尝试做Post()时导致415错误.

杰克逊人的答案是我必须注册处理转换的JodaModule,如下所示:

ObjectMapper objectMapper = new ObjectMapper();
objectMapper.registerModule(new JodaModule());  

这看起来很简单,但我不知道在哪里放这个代码.我的测试代码在调用:

commitmentsResource = 
  rootClient.getChild(SOME_PATH, CommitmentsResource.class);  
commitmentsClient = ((ClientProxy) commitmentsResource).getClientResource();
commitmentsClient.post()

在服务器端,我有一个界面:

public interface CommitmentsResource {
  @Get Representation represent();
  @Post("json") Representation postJson(CommitmentDTO commitment);  
  @Post("form") Representation postForm(Form commitmentForm);  
}

然后我有CommitmentServerResource

@Override
public final Representation postJson(final CommitmentDTO commitmentDTO) {...}

@Override
public final Representation postForm(final Form form) {...}

所以我看不到在哪里插入objectMapper,以便可以调用Post().这就像我想设置全局/默认对象映射器,但我不知道在哪里找到它(或者它是否存在).

我尝试将两个objectMapper代码行添加到我的createInboundRoot中,但这似乎没有什么区别.

非常感谢任何建议,因为我似乎完全被困在这里….

解决方法:

我刚刚尝试了Restlet 2.2的最后一个快照(10月发布,基于jackson 2.1.0),它对我有用.

标签:java,jackson,restlet
来源: https://codeday.me/bug/20190704/1373289.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有