2017-01-04 3 views
0

Java Instantフィールドが含まれているリクエストオブジェクトのシリアル化にjackson依存関係を使用しています。続きjavaインスタントは、jacksonを使用してミリ秒単位でシリアル化されていません。

は、私は以下のMavenの依存関係を対応している、jaxrsを使用して自分のコードからRESTfulなサービスを呼び出していジャクソン

<!-- jackson dependecies --> 
    <dependency> 
     <groupId>com.fasterxml.jackson.datatype</groupId> 
     <artifactId>jackson-datatype-jsr310</artifactId> 
     <version>2.8.5</version> 
    </dependency> 
    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-core</artifactId> 
     <version>2.8.5</version> 
    </dependency> 
    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-databind</artifactId> 
     <version>2.8.5</version> 
    </dependency> 
    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-annotations</artifactId> 
     <version>2.8.5</version> 
    </dependency> 
    <dependency> 
     <groupId>com.fasterxml.jackson.jaxrs</groupId> 
     <artifactId>jackson-jaxrs-json-provider</artifactId> 
     <version>2.8.5</version> 
    </dependency> 
    <dependency> 
     <groupId>com.fasterxml.jackson.datatype</groupId> 
     <artifactId>jackson-datatype-jdk8</artifactId> 
     <version>2.8.5</version> 
    </dependency> 
    <!-- Jackson dependencies end --> 

のための私のmavan依存しています。我々は、単一の日陰瓶にすべてのjarファイルを置くためのApache日陰瓶を使用

<!-- Jersey RESTful Services --> 
     <dependency> 
      <groupId>org.glassfish.jersey.ext</groupId> 
      <artifactId>jersey-spring3</artifactId> 
      <version>2.15</version> 
      <exclusions> 
       <exclusion> 
        <groupId>org.springframework</groupId> 
        <artifactId>spring-core</artifactId> 
       </exclusion> 
       <exclusion> 
        <groupId>org.springframework</groupId> 
        <artifactId>spring-web</artifactId> 
       </exclusion> 
       <exclusion> 
        <groupId>org.springframework</groupId> 
        <artifactId>spring-beans</artifactId> 
       </exclusion> 
      </exclusions> 
     </dependency> 
     <!-- Jersey json --> 
     <dependency> 
      <groupId>org.glassfish.jersey.media</groupId> 
      <artifactId>jersey-media-json-jackson</artifactId> 
      <version>2.15</version> 
     </dependency> 
    <!-- End --> 

。影付きのjarを実行するためにJava8を使用します。オブジェクトをシリアライズすると、Javaインスタントはミリ秒単位ではなくナノ秒単位でシリアル化されます。すなわち

"busDate":{"nano":0,"epochSecond":1482796800} instead of 
"busDate":1482796800 

ObjectMapperクラスのグローバル設定より下に設定しています。

private static ObjectMapper staticMaper; 

static { 
    staticMaper = new ObjectMapper(); 
    staticMaper.findAndRegisterModules(); 
    staticMaper.setSerializationInclusion(Include.NON_NULL); 
    staticMaper.disable(SerializationFeature.WRITE_DATE_TIMESTAMPS_AS_NANOSECONDS); 
    staticMaper.enable(SerializationFeature.WRITE_ENUMS_USING_TO_STRING); 
    staticMaper.disable(DeserializationFeature.READ_DATE_TIMESTAMPS_AS_NANOSECONDS); 
    staticMaper.enable(DeserializationFeature.READ_ENUMS_USING_TO_STRING); 
    staticMaper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); 
    staticMaper.enable(JsonGenerator.Feature.ESCAPE_NON_ASCII); 
} 

誰かがこの問題を解決するのに手伝ってください。

+0

'findAndRegisterModules'はjsr310モジュールを見つけることができません。依存関係がクラスパスにないように見えます。この依存関係が存在するかどうかを確認するには、影付きのjarファイルを確認してください。 – Veeram

答えて

0

私のコードに以下の行を追加しました。

objectMapper.registerModule(new JavaTimeModule()); 時々この行のように見えます - >objectMapper.findAndRegisterModules();が期待どおりに動作しません。

関連する問題