{"id":176,"date":"2024-01-20T00:35:31","date_gmt":"2024-01-19T23:35:31","guid":{"rendered":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=176"},"modified":"2024-01-24T00:36:16","modified_gmt":"2024-01-23T23:36:16","slug":"die-jsonformat-annotation-in-jackson","status":"publish","type":"post","link":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=176","title":{"rendered":"Die @JsonFormat-Annotation in Jackson"},"content":{"rendered":"\n<p>Die Jackson-Bibliothek ist eine leistungsstarke und weit verbreitete Java-Bibliothek f\u00fcr die Verarbeitung von JSON-Daten. Sie bietet eine Vielzahl von Annotations, die Entwicklern helfen, die Art und Weise zu steuern, wie Java-Objekte in JSON und umgekehrt umgewandelt werden. Eine dieser Annotations ist die <code>@JsonFormat<\/code>, die eine pr\u00e4zise Steuerung \u00fcber die Formatierung von Datums- und Zeitwerten in JSON erm\u00f6glicht. In diesem Artikel werden wir uns ausf\u00fchrlich mit der <code>@JsonFormat<\/code>-Annotation befassen und ihre verschiedenen Anwendungsf\u00e4lle erkunden.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Einf\u00fchrung in die @JsonFormat-Annotation<\/h2>\n\n\n\n<p>Die <code>@JsonFormat<\/code>-Annotation ist ein n\u00fctzliches Werkzeug in Jackson, um das Erscheinungsbild von Datum und Zeit in JSON-Objekten zu gestalten. Sie erm\u00f6glicht Entwicklern die Kontrolle \u00fcber das Format, in dem Datums- und Zeitwerte serialisiert und deserialisiert werden. Dies ist besonders wichtig, wenn unterschiedliche Systeme miteinander kommunizieren und eine konsistente Darstellung von Datum und Zeit erforderlich ist.<\/p>\n\n\n\n<p>Um die <code>@JsonFormat<\/code>-Annotation zu verwenden, muss sie auf dem entsprechenden Feld, der Methode oder der Klasse angewendet werden. Hier ist ein einfaches Beispiel, wie die Annotation auf einem Feld in einer Java-Klasse angewendet werden kann:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">BeispielKlasse<\/span> <\/span>{\n    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = <span class=\"hljs-string\">\"yyyy-MM-dd HH:mm:ss\"<\/span>)\n    <span class=\"hljs-keyword\">private<\/span> Date datum;\n\n    <span class=\"hljs-comment\">\/\/ Getter und Setter Methoden<\/span>\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>In diesem Beispiel wird das Feld <code>datum<\/code> so konfiguriert, dass es als Zeichenkette im Format &#8222;yyyy-MM-dd HH:mm:ss&#8220; serialisiert wird.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Die wichtigsten Attribute der @JsonFormat-Annotation<\/h2>\n\n\n\n<p>Die <code>@JsonFormat<\/code>-Annotation verf\u00fcgt \u00fcber mehrere Attribute, die Entwicklern eine pr\u00e4zise Steuerung \u00fcber die Formatierung von Datums- und Zeitwerten erm\u00f6glichen. Hier sind einige der wichtigsten Attribute:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>shape<\/strong>: Das <code>shape<\/code>-Attribut definiert den Typ des JSON-Werts. Es kann verschiedene Werte annehmen, darunter <code>Shape.STRING<\/code>, <code>Shape.NUMBER<\/code>, <code>Shape.ARRAY<\/code> und <code>Shape.OBJECT<\/code>. F\u00fcr Datum und Zeit wird h\u00e4ufig <code>Shape.STRING<\/code> verwendet, um eine Zeichenkettenrepr\u00e4sentation zu erzwingen.<\/li>\n\n\n\n<li><strong>pattern<\/strong>: Das <code>pattern<\/code>-Attribut erm\u00f6glicht die Definition eines benutzerdefinierten Musters f\u00fcr das Datum oder die Uhrzeit. Zum Beispiel kann das Muster &#8222;yyyy-MM-dd&#8220; verwendet werden, um das Datum im Format &#8222;Jahr-Monat-Tag&#8220; zu repr\u00e4sentieren.<\/li>\n\n\n\n<li><strong>timezone<\/strong>: Das <code>timezone<\/code>-Attribut erm\u00f6glicht die Festlegung der Zeitzone f\u00fcr die Darstellung des Datums oder der Uhrzeit. Dies ist besonders wichtig, wenn Anwendungen in verschiedenen Zeitzonen arbeiten.<\/li>\n\n\n\n<li><strong>locale<\/strong>: Das <code>locale<\/code>-Attribut erm\u00f6glicht die Festlegung der Lokalisierung f\u00fcr die Darstellung von Datums- und Uhrzeitinformationen. Es kann hilfreich sein, wenn die Anwendung in verschiedenen L\u00e4ndern und Regionen eingesetzt wird.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Anwendungsbeispiele der @JsonFormat-Annotation<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Beispiel 1: Einfache Datum-Serialisierung<\/h3>\n\n\n\n<p>Angenommen, wir haben eine Klasse <code>Person<\/code> mit einem Geburtsdatum. Wir m\u00f6chten das Geburtsdatum im Format &#8222;yyyy-MM-dd&#8220; in JSON darstellen:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Person<\/span> <\/span>{\n    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = <span class=\"hljs-string\">\"yyyy-MM-dd\"<\/span>)\n    <span class=\"hljs-keyword\">private<\/span> Date geburtsdatum;\n\n    <span class=\"hljs-comment\">\/\/ Getter und Setter Methoden<\/span>\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Mit dieser Konfiguration wird das Geburtsdatum der Person im gew\u00fcnschten Format serialisiert.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Beispiel 2: Datum und Uhrzeit mit Zeitzone<\/h3>\n\n\n\n<p>In diesem Beispiel m\u00f6chten wir ein Ereignis mit Datum, Uhrzeit und Zeitzone repr\u00e4sentieren:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Ereignis<\/span> <\/span>{\n    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = <span class=\"hljs-string\">\"yyyy-MM-dd HH:mm:ss\"<\/span>, timezone = <span class=\"hljs-string\">\"GMT\"<\/span>)\n    <span class=\"hljs-keyword\">private<\/span> Date zeitpunkt;\n\n    <span class=\"hljs-comment\">\/\/ Getter und Setter Methoden<\/span>\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Durch die Angabe der Zeitzone wird sichergestellt, dass das Datum und die Uhrzeit korrekt interpretiert und dargestellt werden, unabh\u00e4ngig von der Systemzeitzone.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Beispiel 3: Lokalisierung f\u00fcr sprachabh\u00e4ngige Darstellung<\/h3>\n\n\n\n<p>Angenommen, wir m\u00f6chten ein Datum mit sprachabh\u00e4ngigem Monatsnamen darstellen:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Ereignis<\/span> <\/span>{\n    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = <span class=\"hljs-string\">\"dd MMMM yyyy\"<\/span>, locale = <span class=\"hljs-string\">\"de_DE\"<\/span>)\n    <span class=\"hljs-keyword\">private<\/span> Date datum;\n\n    <span class=\"hljs-comment\">\/\/ Getter und Setter Methoden<\/span>\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Durch die Angabe der Lokalisierung wird das Datum mit Monatsnamen im deutschen Format dargestellt.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Fazit<\/h2>\n\n\n\n<p>Die <code>@JsonFormat<\/code>-Annotation in Jackson ist ein m\u00e4chtiges Werkzeug, um die Formatierung von Datums- und Zeitwerten in JSON zu steuern. Entwickler k\u00f6nnen damit pr\u00e4zise festlegen, wie Datum und Zeit serialisiert und deserialisiert werden sollen, unter Ber\u00fccksichtigung von Formaten, Zeitzonen und Lokalisierungen. Dies tr\u00e4gt dazu bei, die Interoperabilit\u00e4t zwischen verschiedenen Systemen zu verbessern und sicherzustellen, dass die Darstellung von Datum und Zeit konsistent und verst\u00e4ndlich ist. Bei der Verwendung von Jackson in Java-Anwendungen ist die Kenntnis und Anwendung der <code>@JsonFormat<\/code>-Annotation daher von gro\u00dfer Bedeutung.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Die Jackson-Bibliothek ist eine leistungsstarke und weit verbreitete Java-Bibliothek f\u00fcr die Verarbeitung von JSON-Daten. Sie bietet eine Vielzahl von Annotations, die Entwicklern helfen, die Art und Weise zu steuern, wie Java-Objekte in JSON und umgekehrt umgewandelt werden. Eine dieser Annotations ist die @JsonFormat, die eine pr\u00e4zise Steuerung \u00fcber die Formatierung von Datums- und Zeitwerten in [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-176","post","type-post","status-publish","format-standard","hentry","category-plain_java"],"_links":{"self":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/176","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=176"}],"version-history":[{"count":1,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/176\/revisions"}],"predecessor-version":[{"id":177,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/176\/revisions\/177"}],"wp:attachment":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=176"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=176"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=176"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}