{"id":300,"date":"2024-03-20T09:56:53","date_gmt":"2024-03-20T08:56:53","guid":{"rendered":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=300"},"modified":"2024-03-26T10:03:27","modified_gmt":"2024-03-26T09:03:27","slug":"lesen-und-schreiben-komplexer-json-datenstrukturen-mit-gson","status":"publish","type":"post","link":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=300","title":{"rendered":"Lesen und Schreiben komplexer JSON-Datenstrukturen mit Gson"},"content":{"rendered":"\n<p>JSON (JavaScript Object Notation) ist ein h\u00e4ufig verwendetes Format zum Austausch von Daten zwischen Anwendungen. Gson ist eine Java-Bibliothek, die das Serialisieren und Deserialisieren von Java-Objekten in JSON und umgekehrt erleichtert. In diesem Artikel werden wir uns ausf\u00fchrlich damit besch\u00e4ftigen, wie man komplexe JSON-Datenstrukturen mit Gson liest und schreibt, und dabei verschiedene Annotationen betrachten, die Gson verwendet, um die Serialisierung und Deserialisierung zu steuern.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. Einf\u00fchrung in Gson<\/h2>\n\n\n\n<p>Gson ist eine Java-Bibliothek, die von Google entwickelt wurde und die Verarbeitung von JSON in Java-Anwendungen erleichtert. Es bietet eine einfache API, um Java-Objekte in JSON zu konvertieren und umgekehrt. Gson behandelt automatisch die meisten Typen von Java-Objekten, einschlie\u00dflich komplexer Datenstrukturen wie Listen, Maps und benutzerdefinierter Objekte.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2. Komplexe JSON-Datenstrukturen<\/h2>\n\n\n\n<p>Bevor wir uns mit der Verwendung von Gson befassen, ist es wichtig zu verstehen, was wir unter &#8222;komplexen JSON-Datenstrukturen&#8220; verstehen. Diese Strukturen k\u00f6nnen verschachtelte Objekte, Arrays von Objekten und komplexe Hierarchien von Schl\u00fcssel-Wert-Paaren umfassen. Ein Beispiel f\u00fcr eine komplexe JSON-Datenstruktur k\u00f6nnte eine Liste von Benutzern sein, wobei jeder Benutzer Informationen wie Name, Alter und eine Liste von Freunden enth\u00e4lt.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">3. Serialisierung mit Gson<\/h2>\n\n\n\n<p>Um ein Java-Objekt in JSON zu serialisieren, verwendet Gson Reflexion, um die Felder des Objekts zu analysieren und sie entsprechend in JSON umzuwandeln. Dabei k\u00f6nnen verschiedene Annotationen verwendet werden, um das Verhalten von Gson zu steuern.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3.1. @SerializedName<\/h3>\n\n\n\n<p>Die <code>@SerializedName<\/code>-Annotation wird verwendet, um den Namen eines Feldes im JSON anzugeben, wenn der Name des Feldes im Java-Objekt abweicht. Zum Beispiel:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Person<\/span> <\/span>{\n    @SerializedName(<span class=\"hljs-string\">\"full_name\"<\/span>)\n    <span class=\"hljs-built_in\">String<\/span> fullName;\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">3.2. @Expose<\/h3>\n\n\n\n<p>Die <code>@Expose<\/code>-Annotation wird verwendet, um anzugeben, ob ein Feld f\u00fcr die Serialisierung oder Deserialisierung verf\u00fcgbar sein soll. Standardm\u00e4\u00dfig werden alle Felder eines Objekts serialisiert, es sei denn, sie sind transient oder mit <code>@Expose(serialize = false)<\/code> markiert.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3.3. @Since und @Until<\/h3>\n\n\n\n<p>Die <code>@Since<\/code>&#8211; und <code>@Until<\/code>-Annotationen werden verwendet, um anzugeben, ab welcher bzw. bis zu welcher Version eines Objekts ein Feld serialisiert werden soll. Dies ist n\u00fctzlich, wenn sich die Struktur eines Objekts im Laufe der Zeit \u00e4ndert.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">4. Deserialisierung mit Gson<\/h2>\n\n\n\n<p>Die Deserialisierung von JSON in Java-Objekte erfolgt \u00e4hnlich der Serialisierung, wobei Gson die JSON-Daten analysiert und die entsprechenden Java-Objekte erstellt. Auch hier k\u00f6nnen verschiedene Annotationen verwendet werden, um das Verhalten von Gson zu steuern.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4.1. @SerializedName<\/h3>\n\n\n\n<p>Wie bei der Serialisierung kann die <code>@SerializedName<\/code>-Annotation verwendet werden, um den Namen eines Feldes im JSON anzugeben, wenn er vom Namen des Feldes im Java-Objekt abweicht.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4.2. @Expose<\/h3>\n\n\n\n<p>Die <code>@Expose<\/code>-Annotation wird auch bei der Deserialisierung verwendet, um anzugeben, ob ein Feld aus dem JSON-Datenstrom ignoriert werden soll.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4.3. @Since und @Until<\/h3>\n\n\n\n<p>Auch bei der Deserialisierung werden <code>@Since<\/code> und <code>@Until<\/code> verwendet, um anzugeben, ab welcher bzw. bis zu welcher Version eines Objekts ein Feld deserialisiert werden soll.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">5. Beispiel<\/h2>\n\n\n\n<p>Um die Verwendung von Gson zur Serialisierung und Deserialisierung komplexer JSON-Datenstrukturen zu verdeutlichen, betrachten wir ein Beispiel:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">User<\/span> <\/span>{\n    @SerializedName(<span class=\"hljs-string\">\"user_name\"<\/span>)\n    <span class=\"hljs-built_in\">String<\/span> userName;\n    @Expose(serialize = <span class=\"hljs-literal\">false<\/span>)\n    <span class=\"hljs-built_in\">String<\/span> password;\n    @Since(<span class=\"hljs-number\">1.0<\/span>)\n    int age;\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>In diesem Beispiel wird der Benutzername im JSON als &#8222;user_name&#8220; serialisiert, das Passwort wird nicht serialisiert, und das Feld &#8222;age&#8220; wird nur dann serialisiert, wenn die Version 1.0 oder h\u00f6her verwendet wird.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">6. Fazit<\/h2>\n\n\n\n<p>Das Lesen und Schreiben komplexer JSON-Datenstrukturen mit Gson erfordert das Verst\u00e4ndnis verschiedener Annotationen, die verwendet werden k\u00f6nnen, um das Verhalten von Gson zu steuern. Indem man diese Annotationen geschickt einsetzt, kann man die Serialisierung und Deserialisierung genau auf die Anforderungen seiner Anwendung zuschneiden. Gson bietet eine leistungsf\u00e4hige und flexible M\u00f6glichkeit, JSON in Java zu verarbeiten, und ist daher eine wertvolle Bibliothek f\u00fcr Java-Entwickler.<\/p>\n\n\n\n<p>In diesem Artikel haben wir die Grundlagen der Verwendung von Gson f\u00fcr komplexe JSON-Datenstrukturen behandelt und verschiedene Annotationen betrachtet, mit denen man das Verhalten von Gson steuern kann. Mit diesem Wissen sollten Sie in der Lage sein, Gson effektiv in Ihren Java-Anwendungen einzusetzen und komplexe JSON-Datenstrukturen problemlos zu verarbeiten.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>JSON (JavaScript Object Notation) ist ein h\u00e4ufig verwendetes Format zum Austausch von Daten zwischen Anwendungen. Gson ist eine Java-Bibliothek, die das Serialisieren und Deserialisieren von Java-Objekten in JSON und umgekehrt erleichtert. In diesem Artikel werden wir uns ausf\u00fchrlich damit besch\u00e4ftigen, wie man komplexe JSON-Datenstrukturen mit Gson liest und schreibt, und dabei verschiedene Annotationen betrachten, die [&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-300","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\/300","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=300"}],"version-history":[{"count":1,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/300\/revisions"}],"predecessor-version":[{"id":301,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/300\/revisions\/301"}],"wp:attachment":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=300"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=300"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=300"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}