{"id":14158,"date":"2020-03-07T13:00:17","date_gmt":"2020-03-07T12:00:17","guid":{"rendered":"http:\/\/blog.wenzlaff.de\/?p=14158"},"modified":"2023-08-20T14:55:17","modified_gmt":"2023-08-20T12:55:17","slug":"java-einzeiler-jsonvon-url-einlesen-mit-org-apache-commons-io-am-beispiel-corona-covid-19","status":"publish","type":"post","link":"http:\/\/blog.wenzlaff.de\/?p=14158","title":{"rendered":"Java Einzeiler: JSONvon URL einlesen mit org.apache.commons.io am Beispiel: Corona &#8211; COVID-19"},"content":{"rendered":"<p><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/coronavirus-1536x911-1.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/coronavirus-1536x911-1.png\" alt=\"\" width=\"1536\" height=\"911\" class=\"alignnone size-full wp-image-14165\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/coronavirus-1536x911-1.png 1536w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/coronavirus-1536x911-1-300x178.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/coronavirus-1536x911-1-1024x607.png 1024w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/coronavirus-1536x911-1-768x456.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><br \/>\nHatte <a href=\"http:\/\/blog.wenzlaff.de\/?p=13685\" rel=\"noopener noreferrer\" target=\"_blank\">hier<\/a> schon mal \u00fcber die JSON Lib <\/p>\n<pre class=\"lang:default decode:true \">&lt;dependency&gt;\r\n\t\t\t&lt;groupId&gt;org.json&lt;\/groupId&gt;\r\n\t\t\t&lt;artifactId&gt;json&lt;\/artifactId&gt;\r\n\t\t\t&lt;version&gt;20190722&lt;\/version&gt;\r\n&lt;\/dependency&gt;\r\n<\/pre>\n<p>berichtet. Wie kann damit nun in einer Zeile eine URL abgefragt werden? <\/p>\n<p>Mit Hilfe der <strong>org.apache.commons.io<\/strong> geht das ganz einfach. Also erst einmal die Lib in die pom.xml einbinden.<\/p>\n<pre class=\"lang:default decode:true \">&lt;dependency&gt;\r\n\t\t\t&lt;groupId&gt;org.apache.directory.studio&lt;\/groupId&gt;\r\n\t\t\t&lt;artifactId&gt;org.apache.commons.io&lt;\/artifactId&gt;\r\n\t\t\t&lt;version&gt;2.4&lt;\/version&gt;\r\n&lt;\/dependency&gt;<\/pre>\n<p>Was wollen wir nun beispielsweise abfragen? Alle reden von Corona. Also lesen wir die drei aktuellen Werte der Johns Hopkins University ein. Die werden \u00fcber <a href=\"https:\/\/gisanddata.maps.arcgis.com\/apps\/dashboards\/index.html?fbclid=IwAR32ME-6swuFRuUbYaHL7OUW69gJxTp1ApF_lbQ6fdew1NPvk4tIqTT5oNg?fbclid=IwAR32ME-6swuFRuUbYaHL7OUW69gJxTp1ApF_lbQ6fdew1NPvk4tIqTT5oNg\" rel=\"noopener noreferrer\" target=\"_blank\">diese Webseite<\/a> aktuell dargestellt. Hier mal ein Foto:<br \/>\n<figure id=\"attachment_14159\" aria-describedby=\"caption-attachment-14159\" style=\"width: 2886px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/corona-john-hospins-website.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/corona-john-hospins-website.png\" alt=\"tinyurl.com\/virus-corona\" width=\"2886\" height=\"1802\" class=\"size-full wp-image-14159\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/corona-john-hospins-website.png 2886w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/corona-john-hospins-website-300x187.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/corona-john-hospins-website-1024x639.png 1024w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/corona-john-hospins-website-768x480.png 768w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/corona-john-hospins-website-1536x959.png 1536w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/corona-john-hospins-website-2048x1279.png 2048w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><figcaption id=\"caption-attachment-14159\" class=\"wp-caption-text\">Corona Status<\/figcaption><\/figure><\/p>\n<p>Die Daten werden auch \u00fcber eine JSON-Rest API unter <strong>https:\/\/covid19.mathdro.id\/api<\/strong> bereitgestellt. Hier mal das Ergebniss einer Abfrage:<!--more--><\/p>\n<p><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/json-corona-daten.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/json-corona-daten.png\" alt=\"\" width=\"822\" height=\"674\" class=\"alignnone size-full wp-image-14160\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/json-corona-daten.png 822w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/json-corona-daten-300x246.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/json-corona-daten-768x630.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><\/p>\n<p>So, dann brauchen wir nur noch in einer Java Zeile die Werte abfragen:<\/p>\n<p><code><br \/>\nJSONObject json = new JSONObject(IOUtils.toString(new URL(\"https:\/\/covid19.mathdro.id\/api\"), Charset.forName(\"UTF-8\")));<br \/>\n<\/code><\/p>\n<p>Hier das ganze Java-Beispiel:<\/p>\n<pre class=\"lang:java decode:true \">package corona;\r\n\r\nimport java.io.IOException;\r\nimport java.net.MalformedURLException;\r\nimport java.net.URL;\r\nimport java.nio.charset.Charset;\r\n\r\nimport org.apache.commons.io.IOUtils;\r\nimport org.json.JSONException;\r\nimport org.json.JSONObject;\r\n\r\n\/**\r\n * COVID-19 global data as-a-service https:\/\/covid19.mathdro.id\r\n * \r\n * Daten von: tinyurl.com\/virus-corona\r\n * \r\n * This website and its contents herein, including all data, mapping, and\r\n * analysis (\u201cWebsite\u201d), copyright 2020 Johns Hopkins University, all rights\r\n * reserved, is provided to the public strictly for educational and academic\r\n * research purposes.\r\n * \r\n * Api: https:\/\/covid19.mathdro.id\/api\r\n * \r\n * https:\/\/github.com\/mathdroid\/covid19\r\n * \r\n * License\r\n * \r\n * MIT License 2020, mathdroid.\r\n * \r\n * Transitively from the John Hopkins Site, the data may not be used for\r\n * commercial purposes.\r\n * \r\n * @author Thomas Wenzlaff\r\n *\/\r\npublic class Corona {\r\n\r\n\tprivate static final String URL = \"https:\/\/covid19.mathdro.id\/api\";\r\n\r\n\tpublic static void main(String[] args) throws JSONException, MalformedURLException, IOException {\r\n\r\n\t\tJSONObject json = new JSONObject(IOUtils.toString(new URL(URL), Charset.forName(\"UTF-8\")));\r\n\r\n\t\t\/\/ System.out.println(json.toString());\r\n\r\n\t\tint bestaetigt = getWert(json, \"confirmed\");\r\n\t\tint erholt = getWert(json, \"recovered\");\r\n\t\tint gestorben = getWert(json, \"deaths\");\r\n\t\tString zuletztAktuallisiert = json.getString(\"lastUpdate\");\r\n\r\n\t\tSystem.out.println(\"Anzahl best\u00e4tigte Personen: \" + bestaetigt + \", genesen: \" + erholt + \", gestorben: \" + gestorben + \", zuletzt aktuallisiert: \"\r\n\t\t\t\t+ zuletztAktuallisiert);\r\n\t}\r\n\r\n\tprivate static int getWert(JSONObject json, String key) {\r\n\t\tJSONObject bestaetigt = (JSONObject) json.get(key);\r\n\t\tint anzahl = bestaetigt.getInt(\"value\");\r\n\t\treturn anzahl;\r\n\t}\r\n}\r\n<\/pre>\n<p>Und das Ergebnis des Programms als CSV:<br \/>\n<strong><br \/>\nAnzahl best\u00e4tigte Personen: 102469, genesen: 57436, gestorben: 3491, zuletzt aktuallisiert: 2020-03-07T10:43:02.000Z<\/strong><\/p>\n<p>Jeder neuer Programmlauf liefert die aktuellsten Werte. Und nicht vergessen &#8230;<\/p>\n<p><a href=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/hygienetipps-1536x1119-1.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/hygienetipps-1536x1119-1.png\" alt=\"\" width=\"1536\" height=\"1119\" class=\"alignnone size-full wp-image-14169\" srcset=\"http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/hygienetipps-1536x1119-1.png 1536w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/hygienetipps-1536x1119-1-300x219.png 300w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/hygienetipps-1536x1119-1-1024x746.png 1024w, http:\/\/blog.wenzlaff.de\/wp-content\/uploads\/2020\/03\/hygienetipps-1536x1119-1-768x560.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/a><br \/>\nDank an <a href=\"http:\/\/kleinhirn.eu\/\" rel=\"noopener noreferrer\" target=\"_blank\">Dr. Kleinhirn.eu<\/a> f\u00fcr die kostenlose Bereitstellung beider Bilder \ud83d\ude09<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hatte hier schon mal \u00fcber die JSON Lib &lt;dependency&gt; &lt;groupId&gt;org.json&lt;\/groupId&gt; &lt;artifactId&gt;json&lt;\/artifactId&gt; &lt;version&gt;20190722&lt;\/version&gt; &lt;\/dependency&gt; berichtet. Wie kann damit nun in einer Zeile eine URL abgefragt werden? Mit Hilfe der org.apache.commons.io geht das ganz einfach. Also erst einmal die Lib in die pom.xml einbinden. &lt;dependency&gt; &lt;groupId&gt;org.apache.directory.studio&lt;\/groupId&gt; &lt;artifactId&gt;org.apache.commons.io&lt;\/artifactId&gt; &lt;version&gt;2.4&lt;\/version&gt; &lt;\/dependency&gt; Was wollen wir nun beispielsweise abfragen? Alle reden &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/blog.wenzlaff.de\/?p=14158\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eJava Einzeiler: JSONvon URL einlesen mit org.apache.commons.io am Beispiel: Corona &#8211; COVID-19\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[220,4,3083,5,3897,79],"tags":[3925,3927,3928,3926,3930,3929,282],"class_list":["post-14158","post","type-post","status-publish","format-standard","hentry","category-anleitung","category-eclipse","category-information","category-java","category-java-programmierung","category-programmierung","tag-corona","tag-corona-api","tag-corona-java-api","tag-corona-status","tag-covid-19","tag-rest-api","tag-virus"],"_links":{"self":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/14158","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=14158"}],"version-history":[{"count":0,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=\/wp\/v2\/posts\/14158\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=14158"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=14158"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.wenzlaff.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=14158"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}