{"id":420,"date":"2009-11-04T10:31:00","date_gmt":"2009-11-04T10:31:00","guid":{"rendered":"http:\/\/www.tutego.de\/blog\/javainsel\/?p=420"},"modified":"2009-11-04T10:31:00","modified_gmt":"2009-11-04T10:31:00","slug":"json-serialisierung-mit-jackson","status":"publish","type":"post","link":"https:\/\/www.tutego.de\/blog\/javainsel\/2009\/11\/json-serialisierung-mit-jackson\/","title":{"rendered":"JSON-Serialisierung mit Jackson"},"content":{"rendered":"<p>Nehmen wir folgende Zeile JavaScript-Code, das ein Person-Objekt mit zwei Properties f\u00fcr Name und Alter definiert. Eine Property wird \u00fcber ein Schl\u00fcssel\/Werte-Paar beschrieben:<\/p>\n<p>var person = { &#8222;name&#8220; : &#8222;Michael Jackson&#8220;, &#8222;age&#8220; : 50 };<\/p>\n<p>Die Definition eines Objekts geschieht in der JSON (JavaScript Object Notation). Als Datentypen unterst\u00fctzt JSON Zahlen, Wahreiswerte, Strings, Arrays, null und Objekte \u2013 wie unser Beispiel zeigt. Die Deklarationen k\u00f6nnen geschachtelt sein, um Unterobjekte aufzubauen.<br \/>Zum Zugriff auf die JSON-Daten kommt der Punkt zum Einsatz, sodass der Name nach der Auswertung durch person.name zug\u00e4nglich ist.<\/p>\n<p>Eine Personenbeschreibung wie diese kann auch in einem String stehen, die von JavaScript zur Laufzeit ausgewertet wird.<\/p>\n<p>var json = &#8218;person = { &#8222;name&#8220; : &#8222;Michael Jackson&#8220;, &#8222;age&#8220; : 50 };&#8216;;<br \/>eval( json );<\/p>\n<p>Der Zugriff auf person.name liefert wie vorher den Namen, denn nach der Auswertung mit eval() wird JavaScript ein neues Objekt mit person im Kontext anlegen.<\/p>\n<p>JSON ist besonders praktisch, wenn es darum geht, Daten zwischen einem Server und Browser mit JavaScript-Interpreter auszutauschen. Denn wenn der String json nicht von Hand mit einem String initialisiert wurde, sondern ein Server die Zeichenkette person = { \u2026 }; liefert, haben wir das, was heutzutage in modernen Ajax-Webanwendungen passiert. Die letzte Frage ist nun, wie elegant der Server Zeichenketten im Datenaustauschformat JSON erzeugt und so Objekte \u00fcbertr\u00e4gt. Den String per Hand aufzubauen ist eine L\u00f6sung, aber es geht besser.<\/p>\n<p>Die Open-Source Bibliothek&nbsp; Jackson (http:\/\/jackson.codehaus.org\/) geh\u00f6rt zu den popul\u00e4rsten L\u00f6sungen, die JSON-Daten einliest und ausgibt und auf JavaBeans \u00fcbertr\u00e4gt, sodass eine unkomplizierte Serialisierung in JSON m\u00f6glich wird.<\/p>\n<p>ObjectMapper mapper = new ObjectMapper();<br \/>MyClass myObject = mapper.readValue( input, MyClass.class );<br \/>mapper.writeValue( output, myObject );<\/p>\n<p>Der ObjectMapper \u00fcbernimmt das Lesen\/Schreiben. In der zweiten Zeile wird aus der Eingabequelle input gelesen und ein Objekt vom Typ MyClass rekonstruiert. In der dritten Zeile wird es in die Ausgabe output geschrieben.<\/p>\n<p>JSON ist nicht nur f\u00fcr die Objekt\u00fcbertragung zwischen Server und Browser gut, sondern ist eine elegante Alternative zu XML, wenn es etwa um lokale Konfigurationsdateien geht. JSON ist viel k\u00fcrzer als XML und kann somit zum Beispiel f\u00fcr Konfigurationsdateien \u00fcbersichtlicher sein.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nehmen wir folgende Zeile JavaScript-Code, das ein Person-Objekt mit zwei Properties f\u00fcr Name und Alter definiert. Eine Property wird \u00fcber ein Schl\u00fcssel\/Werte-Paar beschrieben: var person = { &#8222;name&#8220; : &#8222;Michael Jackson&#8220;, &#8222;age&#8220; : 50 }; Die Definition eines Objekts geschieht in der JSON (JavaScript Object Notation). Als Datentypen unterst\u00fctzt JSON Zahlen, Wahreiswerte, Strings, Arrays, null [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[11],"tags":[],"class_list":["post-420","post","type-post","status-publish","format-standard","hentry","category-insel"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/420","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/comments?post=420"}],"version-history":[{"count":0,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/420\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/media?parent=420"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/categories?post=420"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/tags?post=420"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}