Datenaustausch mit JSON

Ähnliche Dokumente
Semistrukturierte Daten

Es gibt immer einen Schlüssel und einen zugehörigen Wert,

JSON. Johannes Baiter. 5. Mai 2015

Programmieren. JavaScript-Objekt-Verarbeitung mit GSON. Heusch --- Ratz Institut für Angewandte Informatik

CSV mit reinem SQL & der Magie von JSON_TABLE einlesen

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Einführung in die Programmierung für NF MI. Übung 04

Medien und Webtechnologie

Vorkurs Informatik WiSe 16/17

Inhaltsverzeichnis. Grundlagen und Einführung (1. Band) 1

Klausur Grundlagen der Programmierung

DOM Document Object Model

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Vorkurs Informatik WiSe 17/18

Organisatorisches. Neue Übungsblätter: Nur mehr elektronisch? Abgabe Di, , 14 Uhr bis Do, , 8Uhr

OCP Java SE 8. Lambda

Freie Markierung Die Templating-Engine FreeMarker im Einsatz

Grundlagen. Felix Döring, Felix Wittwer 24. April Python-Kurs

II.4.2 Abstrakte Klassen und Interfaces - 1 -

string: Beispiele: Test, test, `Seitentitel: ${document.title}`

Software Entwicklung 1

Wie kann man es verhindern das Rad immer wieder erneut erfinden zu müssen?

Organisatorisches. drei Gruppen Gruppe 1: 10:10-11:40, Gruppe 2: 11:45-13:15 Gruppe 3: 13:20-14:50

Organisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download

Python zur Lösung von AvA Übung 1 VON MORITZ FEY

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015

Organisatorisches. Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online

CS1024 Internetbasierte Systeme

~±] Inhalt. 1.1 Ähnlichkeiten zwischen C# und Java Unterschiede zwischen C# und Java Das.NET-Framework 4 1.

Funktionen nur wenn dann

Programmieren II. JavaScript-Objekt-Verarbeitung mit GSON. Heusch -- Ratz -- Institut für Angewandte Informatik

PROGRAMMIERUNG IN JAVA

In C und Java müssen Variablen und Methodenergebnisse durch Typangaben erläutert werden. Welche der folgenden Aussagen sind korrekt und welche nicht:

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik

Gedächtnis. Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet. Zugriff.

Properties und Proxies

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen

Informatik II. Woche 10, Giuseppe Accaputo

Web-Techniken Einführung in JavaScript

javascript Coding-Guidelines 2. Ausgabe Februar 2015 Der Guideline beschreibt den verwendeten Coding-Stil von javascript als eigene Richtline.

Basiswissen in Informatik

Einstieg in die Informatik mit Java

Variablen. int Flugzeug. float. I write code Hund. String. long. Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel

Institut für Programmierung und Reaktive Systeme. Java 7. Markus Reschke

Einstieg in die Informatik mit Java

PROCESSING EINE ZUSAMMENFASSUNG. Created by Michael Kirsch & Beat Rossmy

Modularisierung in Java: Pakete Software Entwicklung 1

Einstieg in die Informatik mit Java

THE GO PROGRAMMING LANGUAGE. Michael Karnutsch & Marko Sulejic

Programmieren in Java -Eingangstest-

Inhalt. Vorbemerkungen... 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen

Bullshit-Bingo Gruppe 4

Programmieren I + II Regeln der Code-Formatierung

Tag 8 Repetitorium Informatik (Java)

II. Grundlagen der Programmierung. Beispiel: Merge Sort. Beispiel: Merge Sort (Forts. ) Beispiel: Merge Sort (Forts. )

JavaScript in Drupal

Einführung Java Programmieren in Java Arrays Schleifen Fehler. Einführung in Java. Arne Hüffmeier. Michelle Liebers, Dennis Hoffmann

LT 56 - NODE.JS ES GIBT AUCH SCHÖNE MOMENTE. Ralf Enderle

Java I Vorlesung Generics und Packages

Scriptsprachen für dynamische Webauftritte

Der Datentyp String. Stringvariable und -vergleiche

Objektorientierte Programmierung Studiengang Medieninformatik

Umsetzung einer Klassenkarte in einer Programmiersprache

JavaScript clientseitige Programmiersprache zur Dynamisierung von Internetseiten

Teil 5 - Java. Programmstruktur Operatoren Schlüsselwörter Datentypen

Probeklausur: Programmierung WS04/05

SmallTalk - Eine kurze Einführung

Transkript:

Datenaustausch mit JSON

Datenaustausch Kodierung von Daten Binärformate (PNG, MP4, Word,... ) effizient, aufwändig, nicht menschenlesbar Textformate (Java,... ): menschenlesbar, Aufwand für Ein- und Ausgabe generische Formate (XML, JSON,... ): Datenaustausch, implementiert in Bibliotheken JSON (JavaScript Object Notation) einfaches textbasiertes Datenaustauschformat menschenlesbar standardisiert in RFC 4627

JSON Objekte mit Attribut:Wert-Zuordnungen Leerzeichen außerhalb von Strings, Zeilenumbrüche nicht relevant { "type" : "node", "id" : "363179", "lat" : 48.1408871, "long" : 11.5615991 }, { "type" : "way", "id" : " 372802991", "nd": ["3763512880", "3763512881", "1545920068"], "tags" : { "bus" : "yes", "name" : "Herkomerplatz", "highway" : "platform" } }

JSON Werte Strings (z.b. "abc", "say \"hello\"") Zahlen (z.b. -12, 12E9, 12.9) Wahrheitswerte (true, false) Arrays Liste von beliebigen Werten in eckigen Klammern Beispiele: [1,2,3,4] und [ { "key": "value"}, 2.4 ] Objekte beliebige Anzahl von Attribut-Wert-Zuweisungen zwischen geschweiften Klammern Attribute sind durch Strings benannt. Beispiel: {"type": "message", "words" : ["Hello", "World!"] } Eine genaue Grammatik findet man auf http://www.json.org.

Verarbeitung von JSON-Daten Es gibt viele Bibliotheken für die Ein- und Ausgabe von JSON-Daten: org.json (verfügbar von https://github.com/stleary/json-java) Jackson GSON... Im Folgenden wird org.json kurz vorgestellt.

org.json Wichtige Klassen: JSONArray: Repräsentiereung von JSON-Arrays, z.b. ["Hello", "World!"] Methoden zum Zugriff auf die Arrayeinträge JSONObject: Repräsentierung von JSON-Objekten, z.b. {"type": "message", "words" : ["Hello", "World!"] } Methoden zum Zugriff auf die Werte von Attributen Für andere Werte (Strings, Zahlen, Wahrheitswerte) werden die Standardklassen von Java verwendet. JSONTokener: Hilfsklasse zum Einlesen z.b. aus einer Datei.

Parsen mit org.json { "type":"way", "nd": ["3763512880","3763512881","1545920068"], "tags": { "name":"herkomerplatz", "highway": "platform" } } String s = JSONObject json = new JSONObject(s); // Wert des Attributs "type" als String String t = json.getstring("type"); // "way" JSONArray nd = json.getjsonarray("nd"); // Wert mit Arrayindex 1 als String String id1 = nd.getstring(1); // Wert mit Arrayindex 1 als Double double d1 = nd.getdouble(1); Bei Fehlern (kein JSON-Format, angefrages Attribut nicht vorhanden, falscher Typ) wird eine JSONException ausgelöst.

Parsen mit org.json { "type":"way", "nd": ["3763512880","3763512881","1545920068"], "tags": { "name":"herkomerplatz", "highway": "platform" } } String s = JSONObject json = new JSONObject(s); // geschachteltes Objekt JSONObject tags = json.getjsonobject("tags"); String n = tags.getstring("name"); // Alle Attribute durchlaufen. // Gibt "type", "nd" und "tags" aus. for (String k: json.keyset()) { System.out.println(k); }

Parsen mit org.json { "type":"way", "nd": ["3763512880","3763512881","1545920068"], "tags": { "name":"herkomerplatz", "highway": "platform" } } String s = JSONObject json = new JSONObject(s); // Schlaegt fehl, da der Wert des Attributs "type" // ein String ist, kein Objekt. JSONObject o = json.getjsonobject("type"); // Abfragen, ob ein Attribut gesetzt ist if (!json.has("data")) {... // Behandle Fall, dass Attribut "data" fehlt. } // Wert des Attributs "data" oder ein Defaultwert, wenn // das Attribut nicht existiert String tag_or_default = json.optstring("data", "default");

Parsen mit org.json ["3763512880","3763512881","1545920068"] String s = JSONArray arr = new JSONArray(s); double d1 = nd.getdouble(1);

Einlesen von Dateien Einlesen eines JSON-Objekts aus einer Datei: InputStream is = new FileInputStream("filename.json"); JSONObject json = new JSONObject(new JSONTokener(is)); Einlesen eines JSON-Arrays aus einer Datei: InputStream is = new FileInputStream("filename.json"); JSONArray arr = new JSONArray(new JSONTokener(is));

Einlesen von Dateien Wenn eine JSON-Datei zusammen mit den class-dateien des Programms geliefert werden soll, kann die Datei mit dem Classloader geladen werden. InputStream is = ClassLoader.getSystemResourceAsStream( "package/filename.json"); Die Datei filename.json wird dabei genau wie Klasssen aus der Package package geladen, sollte also im gleichen Verzeichnis stehen. Das funktoniert auch, wenn Klassen und JSON-Datei in einem jar-archiv verpackt sind.

Ausgabe von JSON-Daten Beispiel: JSONObject json = new JSONObject(); json.put("type", "node"); json.put("id", "34"); json.put("lat", 31.3); json.put("long", 12.8); System.out.println(json); Ausgabe: {"id":"34","type":"node","lat":31.3,"long":12.8}

Allgemeine Hinweise JSON dient nur zum Datenaustausch. Verwenden Sie z.b. JSONObject nicht zur Datenspeicherung. Beim Austausch von Text ist auf die Textkodierung zu achten. Wir verwenden utf8. Behandeln Sie bei der Programmierung alle möglichen Fehlerfälle. JSON-Daten, die aus einer Datei gelesen werden, können nicht als wohlgeformt angenommen werden.