JSON日付を返すときのフォーマット日
ステップ1:CustomObjectMapperクラスを作成します
/*** SpringMVCが@ResponseBodyを使用してJSONを返す場合、日付形式はデフォルトでタイムスタンプとして表示されるという問題を解決します。 */ @component( "CustomObjectMapper")Public Class CustomObjectMapperを使用する必要がありますobjectMapper {public customObjectMapper(){excerserializerFactory Factory = new cussalializerfactory(); Factory.AddGenericMapping(date.class、new jsonserializer <tate>(){@override public void serialize(date value、jsongenerator jsongenerator、serializerproviderプロバイダー)Ioexception、jsonprocessingexception {simplededateformat sdf = simpledateformat HH:mm:ss "); jsongenerator.writestring(sdf.format(value));}}); this.SetserializeFactory(Factory); }}ステップ2:構成は次のとおりです。
<MVC:annotation-driven> <MVC:message-converters> <bean> <Property name = "objectMapper" ref = "CustomObjectMapper"> </property> </bean> </mvc:message-converters> </mvc:annotation-driven>
効果は次のとおりです。
フォーマット前
フォーマット後
Advanced:カスタム形式の日付に戻ります
@responseBodyを使用するときに、JSON文字列の日付形式を返します。日付タイプの属性は、デフォルトで長いタイプのタイムスタンプを返します。カスタム日付形式をどのように返すことができますか?
解決策:現在、実装する2つの方法があります。
1。部分的な変更(よりオンラインですが、推奨されていません)。
ジャクソンの抽象クラスを継承:jsonserializer <t>、そしてjavabeanのプロパティgetter()に@jsonserializeを追加します。
コードは次のとおりです。
java.io.ioexceptionをインポートします。 java.text.simpledateformatをインポートします。 Import Java.util.date; Import org.codehaus.jackson.jsongenerator; Import org.codehaus.jackson.jsonprocessingexception; Import org.codehaus.jackson.map.jsonserializer; Import org.codehaus.jackson.map.serializerprovider; / **** @description return JSON日付データグリッドでの処理処理SimpleDateFormat( "yyyy-mm-dd hh:mm:ss"); jsongenerator.writestring(sdf.format(value)); }}
使い方:
@jsonserialize(whing = customdateserializer.class)public date getCreateDate(){return createdate; } 2。グローバル変更(強く推奨):
mappingjacksonhttpmessageConverterは、主にObjectMapperを使用してJSON文字列を返します。ここでは、このクラスを継承し、jsonserializer <T>を登録します。次に、ConfigurationファイルにカスタムObjectMapperを挿入します。
コードは次のとおりです。
java.io.ioexceptionをインポートします。 java.text.simpledateformatをインポートします。 Import Java.util.date; Import org.codehaus.jackson.jsongenerator; Import org.codehaus.jackson.jsonprocessingexception; Import org.codehaus.jackson.map.jsonserializer; Import org.codehaus.jackson.map.objectmapper; Import org.codehaus.jackson.map.serializerprovider; Import org.codehaus.jackson.map.ser.customserializactory; / *** @description日付タイプを解決して、json形式をカスタム形式として返す*/ public customobjectmapper extends objectmapper {public customobjectmapper(){excerserialializefactory factory = new cusanderializerfactory(); Factory.AddGenericMapping(date.class、new jsonserializer <tate>(){@override public void serialize(date value、jsongenerator jsongenerator、serializerproviderプロバイダー)Ioexception、jsonprocessingexception {simplededateformat sdf = simpledateformat HH:mm:ss "); jsongenerator.writestring(sdf.format(value));}}); this.SetserializeFactory(Factory); }}Spring-servlet.xmlで構成:
<MVC:Annotation-Driven> <MVC:Message-Converters> <bean> <Property name = "ObjectMapper" ref = "CustomObjectMapper"> </Property> </Bean> </MVC:Message-Converters> </MVC:Annotation-Driven> <Bean ID = "CustomObjectMapper"> </bean> </bean>