RESTEasy JSON 応答のカスタマイズに問題があります。
私はweb.xml
オートスキャンを使用しています:
<context-param>
<param-name>resteasy.scan</param-name>
<param-value>true</param-value>
</context-param>
、のカスタマイズクラスは次のObjectMapper
とおりです(nullフィールドではなく、人間が読める新しい日付を設定しました):
@Provider
@Produces(MediaType.APPLICATION_JSON)
public class JacksonConfig implements ContextResolver<ObjectMapper> {
private Logger log = Logger.getLogger(PropertiesConfig.LOG_CATEGORY);
private ObjectMapper objectMapper;
public JacksonConfig() throws Exception {
objectMapper = new ObjectMapper();
objectMapper.getSerializationConfig().setSerializationInclusion(JsonSerialize.Inclusion.NON_NULL);
objectMapper.setDateFormat(new SimpleDateFormat("dd.MM.yyyy"));
objectMapper.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, false);
}
@Override
public ObjectMapper getContext(Class<?> arg0) {
return objectMapper;
}
}
ここに私のサーブレットがあります:
@Path("/search")
public class Search extends ArtesAPI {
@GET
@Path("/")
@Produces(MediaType.APPLICATION_JSON)
public Response search(@Context HttpServletRequest request){
RequestManager reqManager = new RequestManager(request);
MyResponse response = reqManager.doSearchRequest();
return Response.status(200).entity(response).build();
}
}
サーバーにデプロイすると、RESTEasy は次のログを出力します。
10:43:44,320 INFO [TomcatDeployment] deploy, ctxPath=/MyServer
10:43:44,544 INFO [ConfigurationBootstrap] Adding scanned @Provider: myserver.servlets.JacksonConfig
10:43:44,545 INFO [ConfigurationBootstrap] Adding scanned resource: myserver.servlets.Search
しかし、検索 API を呼び出すと、次の応答が返されます: (応答の一部)
{
"entry": [
{
"name": "abbigliamento",
"description": null,
"lastUpdate": 1375448941000,
"subCategory": null
},
{
"name": "car",
"description": null,
"lastUpdate": null,
"subCategory": null
}
}
私のサーバー応答は、null フィールドをlastUpdate
ミリ秒単位で返します。
どこで間違ったのですか?
前もって感謝します。