Posted: Dezember 4th, 2013 | Filed under: Java, Programmieren | Tags: Java, JAVA JSON lesen, JAVA read JSON, JSON, JSON decode | 9 Comments »
Da sich JSON aus meiner Sicht immer mehr gegenüber dem Klassiker XML durchsetzt und ich mittlerweile auch die Verwendung einer JSON-Datei gegenüber einer gängigen “Property-Datei” (*.ini) bevorzuge, hier ein kleines Tutorial mit Hilfe ihr von Googles JSON-Bibliothek gson Json-Dateien einlesen bzw. erzeugen könnt.
GSON Bibliothek herunterladen und einbinden
Zu allererst müsst ihr die Java-Bibliothek gson herunterladen: https://code.google.com/p/google-gson/downloads/list und entpacken. Für die Verwendung benötigt ihr lediglich die Datei gson-X.X.X.jar.
Falls ihr eclipse als IDE eurer Wahl verwendet, könnt ihr hier nachlesen wie ihr diese genau einbindet (unter dem Abschnitt “Bibliothek ins Projekt importieren”).
JSON-Datei lesen
Als Beispiel verwende ich folgende, relativ simple JSON-Datei, welche dennoch alle wichtigen Strukturen wie Array oder Objekt beinhaltet.
personen.json
{
"personen" : [
{
"name" : "Frank",
"alter" : 27,
"hobbys" : [
{
"name" : "Karlsruher SC"
},
{
"name" : "Computer spielen"
}
]
},
{
"name" : "Peter",
"alter" : 21,
"hobbys" : [
{
"name" : "Tennis"
},
{
"name" : "Boxen"
}
]
}
]
}
Prinzipiell kann man JSON-Dateien mit Hilfe zwei verschiedener Vorgehensweise auslesen. Entweder direkt über ein vorhandenes Java-Objekt, oder allgemein über das sogenannte JsonObject. In diesem Beispiel verwende ich den Weg über das JsonObject.
GsonExample.java
import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStreamReader; import com.google.gson.Gson; import com.google.gson.JsonArray; import com.google.gson.JsonObject; public class GsonExample { public static void main(String[] args) { Gson gson = new Gson(); try { // Datei "personen.json" über einen Stream einlesen FileInputStream input = new FileInputStream("personen.json"); BufferedReader reader = new BufferedReader(new InputStreamReader(input)); // Datei als JSON-Objekt einlesen JsonObject json = gson.fromJson(reader, JsonObject.class); // Attribut "personen" als Array lesen JsonArray personen = json.getAsJsonArray("personen"); for(int i = 0; i < personen.size(); i++){ JsonObject person = personen.get(i).getAsJsonObject(); // Attribute ausgeben z.B.: name, alter und hobbies System.out.println(person.get("name").getAsString()); System.out.println(person.get("alter").getAsInt()); // Attribut "hobbys" als Array lesen JsonArray hobbys = person.get("hobbys").getAsJsonArray(); for(int k = 0; k < hobbys.size(); k++){ JsonObject hobby = hobbys.get(k).getAsJsonObject(); // Name des Hobbys ausgeben System.out.println(hobby.get("name").getAsString()); } System.out.println("------"); } } catch (FileNotFoundException e) { e.printStackTrace(); } } } |
Konsolenausgabe
Frank
27
Karlsruher SC
Computer spielen
——
Peter
21
Tennis
Boxen
——
Ich hoffe ich konnte dem ein oder anderen damit helfen. Wie ihr ein vorhandenes Java-Objekt inklusive der vollständigen Daten-Struktur in eine JSON-Datei umwandelt und wieder einliest zeige ich euch das nächste mal.
Posted: November 26th, 2013 | Filed under: Java, Programmieren, Tutorials | Tags: Base64, codieren, decode, encode, Java, konvertieren, String, String in Base64 | No Comments »
Mittels Base64 kann man beliebige Binärdaten oder Strings in eine Zeichenfolge aus lesbaren ASCII-Zeichen umwandeln. Momentan setzte ich Base64 ein, um sonderzeichenbehaftet Datei-Pfade in “harmlose” Strings umzuwandeln. Ein wenig erstaunt hat mich, dass Java dies von Haus aus nicht kann.
Um ein String in Java problemlos in eine Base64-Zeichenketten umzuwandeln könnt ihr die Bibliothek commons-codec aus dem Hause Apache verwenden:
Herunteladen der Bibliothek
Ladet die aktuelle Version der Bibliothek hier runter:
http://commons.apache.org/proper/commons-codec/download_codec.cgi
Zum Beispiel diese hier: http://apache.mirror.iphh.net//commons/codec/binaries/commons-codec-1.8-bin.zip
Entpacken
In der Zip-Datei befinden sich häufig viele *.jar-Dateien, ihr benötigt lediglich die rot markiert Datei. Entpackt diese.
Bibliothek ins Projekt importieren
Jetzt müsst ihr die Bibliothek in Form der Jar-Datei in euer Projekt importieren. In eclipse könnt ihr das über die Projekteigenschaften umsetzen. Idealerweise kopiert ihr eure verwendeten Bibliotheken in ein Verzeichnis innerhalb des Projektes, zum Beispiel in den Ordner Libs: [projektname]\lib\commons-codec-1.8.jar
String in Base64
Nachdem ihr die Bibliothek commons-codecs erfolgreich eingebunden habt, könnt ihr wie folgt Strings nach Base64 codieren.
import org.apache.commons.codec.binary.Base64; public class ConvertStringToBase64 { public static void main(String[] args) { String text = "Hallo, was geht ab!"; // Einen String in Base64 konvertieren (encode) String base64 = new String(Base64.encodeBase64(text.getBytes())); System.out.println(base64); // Einen Base64-String wieder zurück konvertieren (decode) String text2 = new String(Base64.decodeBase64(base64)); System.out.println(text2); } } |
Konsolenausgabe:
SGFsbG8sIHdhcyBnZWh0IGFiIQ==
Hallo, was geht ab!
Das war’s auch schon, hoffe ich konnte dem ein oder anderen von euch helfen 😉
Posted: November 4th, 2013 | Filed under: Internet, Java, Programmieren, Tutorials | Tags: auslesen, crawlen, deutsches Tutorial, internetseiten, Java, jSoup, parsen, scraping, web | 2 Comments »
Um Informationen aus einer Webseite heraus zu extrahieren (engl. web scraping), gibt es viele verschiedene Vorgehensweisen und Frameworks. Nach langer Suche bin ich endlich auf ein einfaches und gut dokumentiertes Framework gestoßen: jSoup
jSoup ist eine Java-Bibliothek mit der es möglich ist mittels CSS-Selektoren und dem Document Object Model (DOM), Seiteninhalte extrem einfach abzugreifen. Das folgende Beispiel erläutert die Funktionsweise des Frameworks und die Einfachheit der Handhabung.
Webseite analysieren
Ziel unseres Tutorial ist es, auf der Wikipedia Startseite die Ereignisse der “Was geschah am <aktuelles Datum>?”-Kategorie auszulesen.
Mit Hilfe der Debug-Konsole im Google Chrome Browser und dem Inspektor ist es möglich die HTML-Struktur zu genau zu analysieren. Unsere Informationen die wir abgreifen möchten befinden sich in einer Liste innerhalb des DIV mit der Id hauptseite-ereignisse.
Beispiel – Wikipedia parsen
Herunterladen könnt ihr die Java-Bibliothek jSoup hier: http://jsoup.org/download
Nachdem ihr die .jar-Datei jsoup-X.X.X.jar in euer Projekt eingebunden habt (so wird’s gemacht http://www.javabeginners.de/Grundlagen/Bibliothek_einbinden.php), könnt die das Framework wie folgt verwenden:
import java.io.IOException; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; public class jSoupExample { public static void main(String[] args) { try { // Wikipedia Seite laden Document doc = Jsoup.connect("http://de.wikipedia.org/wiki/Wikipedia:Hauptseite").get(); // Alle Listenelemente über den entsprechenden Selektor markieren // Ein Leerzeichen initiert ein Kindelement des Elternelementes (links) // div#hauptseite-ergeignisse => Der DIV mit der ID hauptseite-ereignisse (# => id) // div.inhalt => Der DIV mit der Klasse inhalt (. => class) Elements ereignisse = doc.select("div#hauptseite-ereignisse div.inhalt ul li"); // Selektierte Elemente ausgeben ohne HTML-Tags for (Element e : ereignisse) { System.out.println(e.text()); } } catch (IOException e) { e.printStackTrace(); } } } |
|
Konsolenausgabe
Führt man das obige Quellcode-Stück aus, so wird unser gewünschter Inhalt zeilenweise wie folgt ausgegeben:
1763 – In Havanna wird mit dem Bau der Festungsanlage San Carlos de La Cabaña begonnen.
1813 – Der an der badischen Revolution von 1848/49 beteiligte Politiker Lorenz Brentano, nach deren Scheitern im US-Exil und dort 1877 bis 1879 Kongressabgeordneter, kommt zur Welt.
1913 – Am Königlichen Hoftheater Stuttgart wird Walter Braunfels’ Oper Ulenspiegel uraufgeführt.
1913 – Ein von Marseille kommender Schnellzug kollidiert bei Melun mit einem Postzug.
1988 – Die Uraufführung von Thomas Bernhards Drama Heldenplatz am Wiener Burgtheater löst einen Skandal aus.
Alternativen
Viel Spaß beim Auslesen!
Posted: März 21st, 2013 | Filed under: Java, Programmieren, Tutorials | Tags: absteigend, alphabetisch, ArrayList, aufsteigend, Collection, Collections, Java, List, Liste, sortieren | 8 Comments »
In Zukunft will ich mal wieder öfters was zum Thema Java schreiben. Ich werde versuchen ein Sammelsurium an Java Grundlagen zu erarbeiten so dass nach und nach eine Art Nachschlagewerk entsteht.
Anfangen will ich mit dem Sortieren von Listen welche Strings enthalten. Über die Klasse Collections besteht die Möglichkeit Listen automatisiert zu sortieren bzw. neu anzuordnen. Das folgende Beispiel beschreibt wie einfach dies zu realisieren ist.
Beispiel – ArrayList alphabetisch sortieren
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class SortableExample {
public static void main(String[] args) {
/* Liste anlegen, die Strings enthält */
List<String> namen = new ArrayList<String>();
/* Namen hinzufügen */
namen.add("Peter");
namen.add("Frank");
namen.add("Hans");
/* Liste alphabetisch aufsteigend sortieren (a...z) */
Collections.sort(namen);
/* Ausgabe: Frank Hans Peter */
for(String name : namen){
System.out.println(name);
}
/* Liste alphabetisch absteigend sortieren (z...a) */
Collections.sort(namen);
Collections.reverse(namen);
/* Ausgabe: Peter Hans Frank */
for(String name : namen){
System.out.println(name);
}
}
}
|
Posted: Januar 8th, 2013 | Filed under: Java, Software | Tags: code, Java, UML Diagramm, UML Diagramme erstellen | 1 Comment »
Aus Dokumentationsgründen ist es oft notwendig aus bestehendem Quellcode UML-Diagramme zu erzeugen. Seit einiger Zeit benutze ich das schwedische Tool EssModel, welches einfach und schnell zu bedienen ist.
Über den “File > Open folder …” könnt ihr einfach den Source-Ordner eures Java-Projekts angeben.
Um alle Assoziationen und Vererbungen im UML-Diagramm anzuzeigen, sollte in der Hauptansicht unter Connections folgender Wert ausgewählt werden:
Unter dem Menüpunkt “Diagram > Save as picture…” kann man das ausgewählte Diagramm schließlich exportieren.
Download
Herunterladen könnt ihr EssModel hier: http://essmodel.sourceforge.net/