{"id":7428,"date":"2017-10-31T10:37:17","date_gmt":"2017-10-31T09:37:17","guid":{"rendered":"http:\/\/blog.wenzlaff.de\/?p=7428"},"modified":"2019-09-18T18:15:02","modified_gmt":"2019-09-18T16:15:02","slug":"wie-koennen-json-dateien-in-java-objekte-eingelesen-werden-mit-google-gson","status":"publish","type":"post","link":"http:\/\/blog.wenzlaff.de\/?p=7428","title":{"rendered":"Wie k\u00f6nnen Json Dateien in Java Objekte eingelesen werden mit google gson?"},"content":{"rendered":"<p>Wie kann eine Json Datei in ein Java Objekt eingelesen werden? Es kommt doch hin und wieder mal vor, das man eine Json Datei hat, die man einlesen will. Man k\u00f6nnte es generisch einlesen. Oder man erzeugt sich die n\u00f6tigen Java BEs bzw. Pojos und liest die Datei dann ein. Hier mal ein Beispiel mit gson zum einlesen in die zuvor erzeugten Java Klassen. <\/p>\n<p>Es muss in der pom.xml diese Abh\u00e4ngigkeit erg\u00e4nzt werden:<\/p>\n<pre class=\"lang:default decode:true \" >\r\n&lt;dependency&gt;\r\n\t\t\t&lt;groupId&gt;com.google.code.gson&lt;\/groupId&gt;\r\n\t\t\t&lt;artifactId&gt;gson&lt;\/artifactId&gt;\r\n\t\t\t&lt;version&gt;2.7&lt;\/version&gt;\r\n\t\t\t&lt;scope&gt;compile&lt;\/scope&gt;\r\n&lt;\/dependency&gt;<\/pre>\n<p>Z.B. diese <strong>aircraft.json<\/strong> Datei. Die Felder werden <a href=\"https:\/\/github.com\/flightaware\/dump1090\">hier<\/a> beschrieben. Die Datei wird vom Dump1090 Server alle paar Sekunden aktualisert.<\/p>\n<pre class=\"lang:default decode:true \" >\r\n{ \"now\" : 1477853643.7,\r\n  \"messages\" : 45918404,\r\n  \"aircraft\" : [\r\n    {\"hex\":\"471f87\",\"altitude\":38025,\"vert_rate\":-64,\"track\":287,\"speed\":393,\"mlat\":[],\"tisb\":[],\"messages\":5,\"seen\":0.1,\"rssi\":-35.3},\r\n    {\"hex\":\"48520c\",\"squawk\":\"6441\",\"altitude\":38000,\"mlat\":[],\"tisb\":[],\"messages\":26,\"seen\":7.2,\"rssi\":-35.0},\r\n    {\"hex\":\"3c644a\",\"squawk\":\"3537\",\"flight\":\"DLH2TR  \",\"lat\":52.605377,\"lon\":10.574875,\"nucp\":7,\"seen_pos\":13.9,\"altitude\":38025,\"vert_rate\":0,\"track\":191,\"speed\":488,\"category\":\"A0\",\"mlat\":[],\"tisb\":[],\"messages\":306,\"seen\":3.8,\"rssi\":-32.4},\r\n   \r\n    {\"hex\":\"4ca27a\",\"mlat\":[],\"tisb\":[],\"messages\":1654,\"seen\":121.9,\"rssi\":-35.3},\r\n    {\"hex\":\"896184\",\"mlat\":[],\"tisb\":[],\"messages\":4657,\"seen\":295.6,\"rssi\":-35.7},\r\n    {\"hex\":\"4ca2fe\",\"altitude\":37000,\"mlat\":[],\"tisb\":[],\"messages\":7085,\"seen\":3.6,\"rssi\":-35.6}\r\n  ]\r\n}<\/pre>\n<p>Wir schauen uns einfach die Struktur an, und erzeugen Java Klasse mit genau den Feldnamen, das ist wichtig da die Felder dann automatisch per reflection eingelesen werden.<!--more--><\/p>\n<p>Wer erzeugen also eine Klasse Flugzeug, mit den String instanz Variablen hex, altitude, vert_rate usw. Dann generieren wir die Getter und Setter mit Eclipse. Auch eine toString Methode k\u00f6nnen wir generieren.<br \/>\nDas sieht dann z.B. so aus:<\/p>\n<pre class=\"lang:java decode:true \" >package de.wenzlaff.dump1090.be;\r\n\r\nimport java.util.List;\r\n\r\n\/**\r\n * Flugzeug Klasse. Pojo gem.\r\n * \r\n * https:\/\/github.com\/mutability\/dump1090\/blob\/master\/README-json.md\r\n * \r\n * &lt;pre&gt;\r\n\taircraft.json\r\n\t\r\n\tThis file contains dump1090's list of recently seen aircraft. The keys are:\r\n\t\r\n\t    now: the time this file was generated, in seconds since Jan 1 1970 00:00:00 GMT (the Unix epoch).\r\n\t    messages: the total number of Mode S messages processed since dump1090 started.\r\n\t    \r\n\t    aircraft: an array of JSON objects, one per known aircraft. Each aircraft has the following keys. Keys will be omitted if data is not available.\r\n\t        hex: the 24-bit ICAO identifier of the aircraft, as 6 hex digits. The identifier may start with '~', this means that the address is a non-ICAO address (e.g. from TIS-B).\r\n\t        squawk: the 4-digit squawk (octal representation)\r\n\t        flight: the flight name \/ callsign\r\n\t        lat, lon: the aircraft position in decimal degrees\r\n\t        nucp: the NUCp (navigational uncertainty category) reported for the position\r\n\t        seen_pos: how long ago (in seconds before \"now\") the position was last updated\r\n\t        altitude: the aircraft altitude in feet, or \"ground\" if it is reporting it is on the ground\r\n\t        vert_rate: vertical rate in feet\/minute\r\n\t        track: true track over ground in degrees (0-359)\r\n\t        speed: reported speed in kt. This is usually speed over ground, but might be IAS - you can't tell the difference here, sorry!\r\n\t        messages: total number of Mode S messages received from this aircraft\r\n\t        seen: how long ago (in seconds before \"now\") a message was last received from this aircraft\r\n\t        rssi: recent average RSSI (signal power), in dbFS; this will always be negative.\r\n\t        \r\n\t        Beispiel eines Eintrags:\r\n\t        \r\n\t\"hex\":\"4596b2\",\"squawk\":\"1742\",\"lat\":51.993682,\"lon\":11.000218,\r\n    \"nucp\":0,\"seen_pos\":6.1,\"altitude\":30000,\"vert_rate\":0,\"track\":346,\r\n\t\"speed\":246,\"mlat\":[\"lat\",\"lon\",\"track\",\"speed\",\"vert_rate\"],\"tisb\":[],\"messages\":244,\"seen\":0.7,\"rssi\":-32.7},\r\n * \r\n * &lt;\/pre&gt;\r\n * \r\n * \r\n * @author Thomas Wenzlaff\r\n *\r\n *\/\r\npublic class Flugzeug {\r\n\r\n\t\/** Der Name der Variable muss so sein wie in der JSON Datei. *\/\r\n\r\n\t\/**\r\n\t * hex: the 24-bit ICAO identifier of the aircraft, as 6 hex digits. The\r\n\t * identifier may start with '~', this means that the address is a non-ICAO\r\n\t * address (e.g. from TIS-B).\r\n\t *\/\r\n\tprivate String hex;\r\n\t\/** squawk: the 4-digit squawk (octal representation) *\/\r\n\tprivate String squawk;\r\n\t\/** lat: the aircraft position in decimal degrees *\/\r\n\tprivate String lat;\r\n\t\/** lon: the aircraft position in decimal degrees *\/\r\n\tprivate String lon;\r\n\t\/**\r\n\t * altitude: the aircraft altitude in feet, or \"ground\" if it is reporting\r\n\t * it is on the ground\r\n\t *\/\r\n\tprivate String altitude;\r\n\t\/**\r\n\t * speed: reported speed in kt. This is usually speed over ground, but might\r\n\t * be IAS - you can't tell the difference here, sorry!\r\n\t *\/\r\n\tprivate String speed;\r\n\t\/** flight: the flight name \/ callsign *\/\r\n\tprivate String flight;\r\n\r\n\t\/**\r\n\t * nucp: the NUCp (navigational uncertainty category) reported for the\r\n\t * position\r\n\t *\/\r\n\tprivate String nucp;\r\n\t\/**\r\n\t * seen_pos: how long ago (in seconds before \"now\") the position was last\r\n\t * updated\r\n\t *\/\r\n\tprivate String seen_pos;\r\n\t\/** vert_rate: vertical rate in feet\/minute *\/\r\n\tprivate String vert_rate;\r\n\t\/** track: true track over ground in degrees (0-359) *\/\r\n\tprivate String track;\r\n\t\/** messages: total number of Mode S messages received from this aircraft *\/\r\n\tprivate String messages;\r\n\t\/**\r\n\t * seen: how long ago (in seconds before \"now\") a message was last received\r\n\t * from this aircraft\r\n\t *\/\r\n\tprivate String seen;\r\n\t\/**\r\n\t * rssi: recent average RSSI (signal power), in dbFS; this will always be\r\n\t * negative.\r\n\t *\/\r\n\tprivate String rssi;\r\n\r\n\tprivate List&lt;String&gt; mlat;\r\n\tprivate List&lt;String&gt; tisb;\r\n\r\n\tpublic Flugzeug() {\r\n\t\tsuper();\r\n\t}\r\n\r\n\tpublic String getHex() {\r\n\t\treturn hex;\r\n\t}\r\n\r\n\tpublic void setHex(String hex) {\r\n\t\tthis.hex = hex;\r\n\t}\r\n\r\n\tpublic String getSquawk() {\r\n\t\treturn squawk;\r\n\t}\r\n\r\n\tpublic void setSquawk(String squawk) {\r\n\t\tthis.squawk = squawk;\r\n\t}\r\n\r\n\tpublic String getLat() {\r\n\t\treturn lat;\r\n\t}\r\n\r\n\tpublic void setLat(String lat) {\r\n\t\tthis.lat = lat;\r\n\t}\r\n\r\n\tpublic String getLon() {\r\n\t\treturn lon;\r\n\t}\r\n\r\n\tpublic void setLon(String lon) {\r\n\t\tthis.lon = lon;\r\n\t}\r\n\r\n\tpublic String getAltitude() {\r\n\t\treturn altitude;\r\n\t}\r\n\r\n\tpublic void setAltitude(String altitude) {\r\n\t\tthis.altitude = altitude;\r\n\t}\r\n\r\n\tpublic String getSpeed() {\r\n\t\treturn speed;\r\n\t}\r\n\r\n\tpublic void setSpeed(String speed) {\r\n\t\tthis.speed = speed;\r\n\t}\r\n\r\n\t\/**\r\n\t * @return das flight\r\n\t *\/\r\n\tpublic String getFlight() {\r\n\t\treturn flight;\r\n\t}\r\n\r\n\t\/**\r\n\t * @param flight\r\n\t *            das flight wird gesetzt\r\n\t *\/\r\n\tpublic void setFlight(String flight) {\r\n\t\tthis.flight = flight;\r\n\t}\r\n\r\n\t\/**\r\n\t * @return das nucp\r\n\t *\/\r\n\tpublic String getNucp() {\r\n\t\treturn nucp;\r\n\t}\r\n\r\n\t\/**\r\n\t * @param nucp\r\n\t *            das nucp wird gesetzt\r\n\t *\/\r\n\tpublic void setNucp(String nucp) {\r\n\t\tthis.nucp = nucp;\r\n\t}\r\n\r\n\t\/**\r\n\t * @return das seen_pos\r\n\t *\/\r\n\tpublic String getSeen_pos() {\r\n\t\treturn seen_pos;\r\n\t}\r\n\r\n\t\/**\r\n\t * @param seen_pos\r\n\t *            das seen_pos wird gesetzt\r\n\t *\/\r\n\tpublic void setSeen_pos(String seen_pos) {\r\n\t\tthis.seen_pos = seen_pos;\r\n\t}\r\n\r\n\t\/**\r\n\t * @return das vert_rate\r\n\t *\/\r\n\tpublic String getVert_rate() {\r\n\t\treturn vert_rate;\r\n\t}\r\n\r\n\t\/**\r\n\t * @param vert_rate\r\n\t *            das vert_rate wird gesetzt\r\n\t *\/\r\n\tpublic void setVert_rate(String vert_rate) {\r\n\t\tthis.vert_rate = vert_rate;\r\n\t}\r\n\r\n\t\/**\r\n\t * @return das track\r\n\t *\/\r\n\tpublic String getTrack() {\r\n\t\treturn track;\r\n\t}\r\n\r\n\t\/**\r\n\t * @param track\r\n\t *            das track wird gesetzt\r\n\t *\/\r\n\tpublic void setTrack(String track) {\r\n\t\tthis.track = track;\r\n\t}\r\n\r\n\t\/**\r\n\t * @return das mlat\r\n\t *\/\r\n\tpublic List&lt;String&gt; getMlat() {\r\n\t\treturn mlat;\r\n\t}\r\n\r\n\t\/**\r\n\t * @param mlat\r\n\t *            das mlat wird gesetzt\r\n\t *\/\r\n\tpublic void setMlat(List&lt;String&gt; mlat) {\r\n\t\tthis.mlat = mlat;\r\n\t}\r\n\r\n\t\/**\r\n\t * @return das tisb\r\n\t *\/\r\n\tpublic List&lt;String&gt; getTisb() {\r\n\t\treturn tisb;\r\n\t}\r\n\r\n\t\/**\r\n\t * @param tisb\r\n\t *            das tisb wird gesetzt\r\n\t *\/\r\n\tpublic void setTisb(List&lt;String&gt; tisb) {\r\n\t\tthis.tisb = tisb;\r\n\t}\r\n\r\n\t\/**\r\n\t * @return das messages\r\n\t *\/\r\n\tpublic String getMessages() {\r\n\t\treturn messages;\r\n\t}\r\n\r\n\t\/**\r\n\t * @param messages\r\n\t *            das messages wird gesetzt\r\n\t *\/\r\n\tpublic void setMessages(String messages) {\r\n\t\tthis.messages = messages;\r\n\t}\r\n\r\n\t\/**\r\n\t * @return das seen\r\n\t *\/\r\n\tpublic String getSeen() {\r\n\t\treturn seen;\r\n\t}\r\n\r\n\t\/**\r\n\t * @param seen\r\n\t *            das seen wird gesetzt\r\n\t *\/\r\n\tpublic void setSeen(String seen) {\r\n\t\tthis.seen = seen;\r\n\t}\r\n\r\n\t\/**\r\n\t * @return das rssi\r\n\t *\/\r\n\tpublic String getRssi() {\r\n\t\treturn rssi;\r\n\t}\r\n\r\n\t\/**\r\n\t * @param rssi\r\n\t *            das rssi wird gesetzt\r\n\t *\/\r\n\tpublic void setRssi(String rssi) {\r\n\t\tthis.rssi = rssi;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String toString() {\r\n\t\tStringBuilder builder = new StringBuilder();\r\n\t\tbuilder.append(\"Flugzeug [\");\r\n\t\tif (hex != null) {\r\n\t\t\tbuilder.append(\"hex=\");\r\n\t\t\tbuilder.append(hex);\r\n\t\t\tbuilder.append(\", \");\r\n\t\t}\r\n\t\tif (squawk != null) {\r\n\t\t\tbuilder.append(\"squawk=\");\r\n\t\t\tbuilder.append(squawk);\r\n\t\t\tbuilder.append(\", \");\r\n\t\t}\r\n\t\tif (lat != null) {\r\n\t\t\tbuilder.append(\"lat=\");\r\n\t\t\tbuilder.append(lat);\r\n\t\t\tbuilder.append(\", \");\r\n\t\t}\r\n\t\tif (lon != null) {\r\n\t\t\tbuilder.append(\"lon=\");\r\n\t\t\tbuilder.append(lon);\r\n\t\t\tbuilder.append(\", \");\r\n\t\t}\r\n\t\tif (altitude != null) {\r\n\t\t\tbuilder.append(\"altitude=\");\r\n\t\t\tbuilder.append(altitude);\r\n\t\t\tbuilder.append(\", \");\r\n\t\t}\r\n\t\tif (speed != null) {\r\n\t\t\tbuilder.append(\"speed=\");\r\n\t\t\tbuilder.append(speed);\r\n\t\t\tbuilder.append(\", \");\r\n\t\t}\r\n\t\tif (flight != null) {\r\n\t\t\tbuilder.append(\"flight=\");\r\n\t\t\tbuilder.append(flight);\r\n\t\t\tbuilder.append(\", \");\r\n\t\t}\r\n\t\tif (nucp != null) {\r\n\t\t\tbuilder.append(\"nucp=\");\r\n\t\t\tbuilder.append(nucp);\r\n\t\t\tbuilder.append(\", \");\r\n\t\t}\r\n\t\tif (seen_pos != null) {\r\n\t\t\tbuilder.append(\"seen_pos=\");\r\n\t\t\tbuilder.append(seen_pos);\r\n\t\t\tbuilder.append(\", \");\r\n\t\t}\r\n\t\tif (vert_rate != null) {\r\n\t\t\tbuilder.append(\"vert_rate=\");\r\n\t\t\tbuilder.append(vert_rate);\r\n\t\t\tbuilder.append(\", \");\r\n\t\t}\r\n\t\tif (track != null) {\r\n\t\t\tbuilder.append(\"track=\");\r\n\t\t\tbuilder.append(track);\r\n\t\t\tbuilder.append(\", \");\r\n\t\t}\r\n\t\tif (messages != null) {\r\n\t\t\tbuilder.append(\"messages=\");\r\n\t\t\tbuilder.append(messages);\r\n\t\t\tbuilder.append(\", \");\r\n\t\t}\r\n\t\tif (seen != null) {\r\n\t\t\tbuilder.append(\"seen=\");\r\n\t\t\tbuilder.append(seen);\r\n\t\t\tbuilder.append(\", \");\r\n\t\t}\r\n\t\tif (rssi != null) {\r\n\t\t\tbuilder.append(\"rssi=\");\r\n\t\t\tbuilder.append(rssi);\r\n\t\t\tbuilder.append(\", \");\r\n\t\t}\r\n\t\tif (mlat != null &amp;&amp; !mlat.isEmpty()) {\r\n\t\t\tbuilder.append(\"mlat=\");\r\n\t\t\tbuilder.append(mlat);\r\n\t\t\tbuilder.append(\", \");\r\n\t\t}\r\n\t\tif (tisb != null &amp;&amp; !tisb.isEmpty()) {\r\n\t\t\tbuilder.append(\"tisb=\");\r\n\t\t\tbuilder.append(tisb);\r\n\t\t}\r\n\t\tbuilder.append(\"]\");\r\n\t\tbuilder.append(\"\\n\");\r\n\t\treturn builder.toString();\r\n\t}\r\n\r\n}\r\n<\/pre>\n<p>Da wir mehrere Flugzeuge haben k\u00f6nnten wir noch eine Klasse Flugzeuge wie oben erzeugen:<\/p>\n<pre class=\"lang:java decode:true \" >package de.wenzlaff.dump1090.be;\r\n\r\nimport java.util.ArrayList;\r\nimport java.util.List;\r\n\r\nimport org.slf4j.Logger;\r\nimport org.slf4j.LoggerFactory;\r\n\r\nimport de.wenzlaff.dump1090.action.TimerAktion;\r\n\r\n\/**\r\n * Flugzeuge.\r\n * \r\n * @author Thomas Wenzlaff\r\n *\r\n *\/\r\npublic class Flugzeuge {\r\n\r\n\t\/** Testmodus wenn auf true, bei false ist Produktion. *\/\r\n\tprivate boolean TEST = true;\r\n\r\n\t\/** Der Name der Variable muss so sein wie in der JSON Datei. *\/\r\n\tprivate String now;\r\n\tprivate String messages;\r\n\tprivate List&lt;Flugzeug&gt; aircraft;\r\n\r\n\tprivate static final Logger LOG = LoggerFactory.getLogger(TimerAktion.class);\r\n\r\n\tpublic Flugzeuge() {\r\n\t\tsuper();\r\n\t\tif (TEST) {\r\n\t\t\tLOG.info(\"Testmodus ist angeschaltet.\");\r\n\t\t}\r\n\t\taircraft = new ArrayList&lt;Flugzeug&gt;();\r\n\t}\r\n\r\n\t\/**\r\n\t * Liefert alle Flugzeuge mit Luftnotfall.\r\n\t * \r\n\t * Mit den Codes 7500, 7600 und 7700 werden Informationen \u00fcber die Art einer\r\n\t * Luftnotlage \u00fcbermittelt.\r\n\t * \r\n\t * Gebr\u00e4uchliche Merkspr\u00fcche sind angef\u00fcgt:\r\n\t * \r\n\t * &lt;pre&gt;\r\n\t    7500 \u2013 Flugzeugentf\u00fchrung (hijacking; seven-five - man with a knife)\r\n\t    7600 \u2013 Funkausfall (radio failure; seven-six - hear nix \/ radio nix \/ need a radio fix)\r\n\t    7700 \u2013 Luftnotfall (emergency; seven-seven - going to heaven \/ falling from heaven \/ pray to heaven)\r\n\t * &lt;\/pre&gt;\r\n\t * \r\n\t * @return\r\n\t *\/\r\n\tpublic List&lt;Flugzeug&gt; getNotfall() {\r\n\t\tList&lt;Flugzeug&gt; notfallFlugzeuge = new ArrayList&lt;Flugzeug&gt;();\r\n\r\n\t\tfor (Flugzeug flugzeug : aircraft) {\r\n\t\t\tif (flugzeug.getSquawk() != null) {\r\n\t\t\t\tif (flugzeug.getSquawk().equals(\"7500\") || flugzeug.getSquawk().equals(\"7600\")\r\n\t\t\t\t\t\t|| flugzeug.getSquawk().equals(\"7700\")) {\r\n\t\t\t\t\tnotfallFlugzeuge.add(flugzeug);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (TEST) {\r\n\t\t\t\/\/ testweise ein Flugzeug erg\u00e4nzen\r\n\t\t\tnotfallFlugzeuge.add(aircraft.get(0));\r\n\r\n\t\t}\r\n\t\treturn notfallFlugzeuge;\r\n\t}\r\n\r\n\tpublic void addFlugzeug(Flugzeug f) {\r\n\t\taircraft.add(f);\r\n\t}\r\n\r\n\t\/**\r\n\t * @return das flugzeuge\r\n\t *\/\r\n\tpublic List&lt;Flugzeug&gt; getFlugzeuge() {\r\n\t\treturn aircraft;\r\n\t}\r\n\r\n\tpublic int getAnzahlFlugzeuge() {\r\n\t\treturn aircraft.size();\r\n\t}\r\n\r\n\t\/**\r\n\t * @return das now\r\n\t *\/\r\n\tpublic String getNow() {\r\n\t\treturn now;\r\n\t}\r\n\r\n\t\/**\r\n\t * @param now\r\n\t *            das now wird gesetzt\r\n\t *\/\r\n\tpublic void setNow(String now) {\r\n\t\tthis.now = now;\r\n\t}\r\n\r\n\t\/**\r\n\t * @return das messages\r\n\t *\/\r\n\tpublic String getMessages() {\r\n\t\treturn messages;\r\n\t}\r\n\r\n\t\/**\r\n\t * @param messages\r\n\t *            das messages wird gesetzt\r\n\t *\/\r\n\tpublic void setMessages(String messages) {\r\n\t\tthis.messages = messages;\r\n\t}\r\n\r\n\t\/**\r\n\t * @param flugzeuge\r\n\t *            das flugzeuge wird gesetzt\r\n\t *\/\r\n\tpublic void setFlugzeuge(List&lt;Flugzeug&gt; flugzeuge) {\r\n\t\taircraft = flugzeuge;\r\n\t}\r\n\r\n\t@Override\r\n\tpublic String toString() {\r\n\t\tStringBuilder builder = new StringBuilder();\r\n\t\tbuilder.append(\"Flugzeuge [\");\r\n\t\tif (now != null) {\r\n\t\t\tbuilder.append(\"now=\");\r\n\t\t\tbuilder.append(now);\r\n\t\t\tbuilder.append(\", \");\r\n\t\t}\r\n\t\tif (messages != null) {\r\n\t\t\tbuilder.append(\"messages=\");\r\n\t\t\tbuilder.append(messages);\r\n\t\t\tbuilder.append(\", \");\r\n\t\t\tbuilder.append(\"\\n\");\r\n\t\t}\r\n\t\tif (aircraft != null) {\r\n\t\t\tbuilder.append(\"aircraft=\");\r\n\t\t\tbuilder.append(aircraft);\r\n\t\t}\r\n\t\tbuilder.append(\"]\");\r\n\t\tbuilder.append(\"\\n\");\r\n\t\treturn builder.toString();\r\n\t}\r\n\r\n}\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Wie kann eine Json Datei in ein Java Objekt eingelesen werden? Es kommt doch hin und wieder mal vor, das man eine Json Datei hat, die man einlesen will. Man k\u00f6nnte es generisch einlesen. Oder man erzeugt sich die n\u00f6tigen Java BEs bzw. Pojos und liest die Datei dann ein. Hier mal ein Beispiel mit &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/blog.wenzlaff.de\/?p=7428\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eWie k\u00f6nnen Json Dateien in Java Objekte eingelesen werden mit google gson?\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[220,5],"tags":[2178,1257],"class_list":["post-7428","post","type-post","status-publish","format-standard","hentry","category-anleitung","category-java","tag-java","tag-json"],"_links":{"self":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/7428","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=7428"}],"version-history":[{"count":0,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/7428\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=7428"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=7428"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=7428"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}