Interface JSON Objekte aus Java Objekten erzeugen

Joew0815

Bekanntes Mitglied
Hallo,

ich möchte Java Objekte über einen Socket verschicken. Dazu habe ich einen Parser geschrieben der JSON Nachrichten erstellt und auch wieder parst.

Nun möchte ich ein Interface definieren, das es mir erlaubt alle Objekte die dieses Interface implementieren in JSON Objekte umzuwandeln und aus JSON Objekten wieder zu instanziieren.

Java:
public interface JSONMessageInterface<E> {

    // Das ist soweit klar
    public JSONObject getJSONRepresentation();

    // Hier weiß ich nicht weiter
    public E getObjectFromJSON(JSONObject object);

}

Ich dachte an ein Interface wie das oben beschriebene. Nun habe ich allerdings das Problem, dass ich jedes mal ein Objekt benötige um ein neues Objekt aus einem JSON zu erzeugen. Die eigentlich logische Lösung wäre eine statische Factory Methode, aber das ist so ja nicht erlaubt.

Gibt es eine Möglichkeit Klassen zu zwingen eine statische Methode zu implementieren? Gibt es eine andere schöne Möglichkeit für Objekte eine JSON Repräsentation sowie deren Konvertierung zu implementieren?

Oder sollte ich am Ende doch gson verwenden?
 

birdseedmusic

Gesperrter Benutzer
Ich verstehe dein Problem mit deinem Ansatz nicht so recht. Wo hakt es?

Aber nein, du kannst eine Klasse nicht zwingen eine statische Methode zu implementieren.
 

Joew0815

Bekanntes Mitglied
Ich verstehe dein Problem mit deinem Ansatz nicht so recht. Wo hakt es?

Angenommen ich habe ein JSONObject. Daraus möchte ich nun ein Auto Objekt erstellen. Das würde dann so funktionieren.

Auto a = new Auto().getObjectFromJSON(jsonObject);

Ich muss also jedes mal ein Objekt instanziieren um das JSONObject parsen zu können, weil die Methode nicht statisch ist.
 

Matt

Aktives Mitglied
Vllt. ist das interessant für dich. Wenn man es etwas anpasst.

Java:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.internal.Primitives;

public class JSONFileToObject {
	public static <T> T loadFile(String filePath, Class<T> classOfT) {
		
		Gson gson = new Gson();
		Object obj = null;
		try {
	 
			BufferedReader br = new BufferedReader(
				new FileReader(filePath));
	 
			//convert the json string back to object
			obj = gson.fromJson(br, classOfT);
	 
	 
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		return Primitives.wrap(classOfT).cast(obj);
	}
	
	public static void writeFile(String filePath, Object obj) {
		try {
			Gson gson = new GsonBuilder().setPrettyPrinting().create();
			String json = gson.toJson(obj);
			
			FileWriter writer = new FileWriter(filePath);
			writer.write(json);
			writer.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
 

Joew0815

Bekanntes Mitglied
Gson kenne ich, ich hätte nur gerne meine eigene JSON Repräsentation der Objekte. Aber so wie ich mir das im Startpost vorgestellt habe, geht das dann wohl nicht?

Trotzdem danke.
 

Matt

Aktives Mitglied
spricht was dagegen, das die oberste Superklasse einfach von einer Klasse erbt, welche diese Methoden bereitstellt? Natürlich müssten dann aber alle anderen Klassen die ausserhalb der Hierarchie stehen auch davon erben sofern sie diese Methode besitzen sollen :)
 

Joew0815

Bekanntes Mitglied
spricht was dagegen, das die oberste Superklasse einfach von einer Klasse erbt, welche diese Methoden bereitstellt? Natürlich müssten dann aber alle anderen Klassen die ausserhalb der Hierarchie stehen auch davon erben sofern sie diese Methode besitzen sollen

Die Methode müsste aber Klassenspezifisch überschrieben werden. Das überschreiben geht bei statischen Methoden ja nicht.

1. Warum machst du sie nicht einfach statisch?
2. Warum machst du das selber? Ich würde da Jackson benutzen.

1. Ich will alle Kindklassen dazu zwingen diese Methode zu implementieren. Jede Klasse braucht ihre eigene Implementierung davon.
2. Weil nicht immer alles was in der Klasse ist auch wirklich relevant ist und ich über das Netzwerk wirklich nur das nötige senden möchte um unnötigen traffic zu vermeiden, da die Anwendung auch über das mobile Netz genutzt werden soll.


Ich habe bereits eine Implementierung mit seperaten Parser Klassen die statische Methoden bereitstellen um die Objekte zu parsen. Ich habe nur gemerkt, dass dies relativ fehleranfällig ist, da es passieren kann dass ich an den Klassen Änderungen mache und diese dann vergesse auf die Parser zu übertragen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Objekte in JSON speichern?? Java Basics - Anfänger-Themen 1
I JSON in Objekt umwandeln Java Basics - Anfänger-Themen 3
J JSON mit einem JPanel Java Basics - Anfänger-Themen 3
V JSON-Objs aus JSON-Obj filtern und löschen (Manipulation ohne Kenntnis der vollst. Struktur) Java Basics - Anfänger-Themen 12
I JSON / XML Struktur mit Vererbung / Interfaces Java Basics - Anfänger-Themen 0
I API - zurückgegebener JSON String lesen und in Entity konvertieren Java Basics - Anfänger-Themen 2
I JSON - cannot deserialize from Object value Java Basics - Anfänger-Themen 16
S JSON einlesen und benutzen Java Basics - Anfänger-Themen 5
HolyFUT JSON String in Java Object schreiben - Anführungszeichen rauskriegen? Java Basics - Anfänger-Themen 17
BATMAN_2008 Jackson adding additional fields to JSON throws java.util.concurrent.CompletionException: Java Basics - Anfänger-Themen 2
I JSON und Interface Java Basics - Anfänger-Themen 3
J Wert in einer json Datei ändern und speichern Java Basics - Anfänger-Themen 3
J Json Datei auslesen Java Basics - Anfänger-Themen 4
J JSON-HashMap Java Basics - Anfänger-Themen 3
P JSON-Array auf Excel-Spalten verteilen? Java Basics - Anfänger-Themen 5
P Variablen HttpResponse.getBody() wird automatisch org.json Object und kann nicht zu json.simple Object gecastet werden? Java Basics - Anfänger-Themen 7
P Ressourcen für JSON & API Informationen? Java Basics - Anfänger-Themen 1
D JSON in JSOUP ELEMENTS Java Basics - Anfänger-Themen 1
M Wie analysiert JSON eine toString-Ausgabe ? Java Basics - Anfänger-Themen 1
F POST-Request mit json - Abfrage mit Java Java Basics - Anfänger-Themen 2
R Value von einem JSON-Objekt ausgeben Java Basics - Anfänger-Themen 4
S JSON Datei schreiben und lesen Java Basics - Anfänger-Themen 3
F Kann JSON nicht deserialisieren Java Basics - Anfänger-Themen 0
R JSON Array Java Basics - Anfänger-Themen 4
E Erste Schritte Wie führe ich org.json.jar aus? Java Basics - Anfänger-Themen 6
M JSON Format Java Basics - Anfänger-Themen 5
I JSON Datei in Array umwandeln Java Basics - Anfänger-Themen 1
A JSON Lesen und Schreiben. Java Basics - Anfänger-Themen 3
L Jackson JSON parsen Java Basics - Anfänger-Themen 7
A JSON versenden Java Basics - Anfänger-Themen 2
N JSON - komme nicht weiter Java Basics - Anfänger-Themen 2
Y Fehler in Json Datei Java Basics - Anfänger-Themen 4
F JSON null macht mir ein Problem Java Basics - Anfänger-Themen 3
N Suchfeld, JSON Java Basics - Anfänger-Themen 2
F JSON in dokumentierten Format als PDF Java Basics - Anfänger-Themen 3
P JSON-Konfigurationsdatei verwenden: Probleme mit Pfad Java Basics - Anfänger-Themen 1
J JSON Java Basics - Anfänger-Themen 2
F JSON von XBMC Java Basics - Anfänger-Themen 1
Traxter JSON in Java Java Basics - Anfänger-Themen 15
J String aus Json File parsen Java Basics - Anfänger-Themen 6
B Best Practice JSON Datei zerlegen Java Basics - Anfänger-Themen 1
C XML und/oder JSON Java Basics - Anfänger-Themen 3
J Funktion um JSON per Post senden/emfangen Java Basics - Anfänger-Themen 3
L Input/Output JSON Objekt abrufen und ausgeben Java Basics - Anfänger-Themen 9
D JSON Java Basics - Anfänger-Themen 4
R JSON - Ausgabe als HTML mit gson Java Basics - Anfänger-Themen 6
F JSON to JAVA (und vice versa) Java Basics - Anfänger-Themen 2
M JSON Datensätze aus Website in Tabelle Java Basics - Anfänger-Themen 17
C Java, Javascript, Dojox und JSON Java Basics - Anfänger-Themen 4
S JSON String in Object umwandeln Java Basics - Anfänger-Themen 3
I Zapier -> wie werden Objekte gespeichert? Java Basics - Anfänger-Themen 10
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
K Hab ich dass so richtig erklärt (Objekte und Referenzen)? Java Basics - Anfänger-Themen 5
I Objekte in ShareProject speichern um später zu nutzen Java Basics - Anfänger-Themen 4
J Objekte Java Basics - Anfänger-Themen 22
T Objekte mit arrays erstellen Java Basics - Anfänger-Themen 6
Hzrfa Objekte, Referenz Java Basics - Anfänger-Themen 5
T 3D Objekte verarbeiten Java Basics - Anfänger-Themen 2
N Welche Objekte kann man zu einem Set hinzufügen Java Basics - Anfänger-Themen 4
I XML einlesen und Objekte bekommen Java Basics - Anfänger-Themen 2
W Objekte einer ArrayList in txt-datei schreiben mit Paths? Java Basics - Anfänger-Themen 2
Encera Zugriff auf Map-Objekte Java Basics - Anfänger-Themen 3
E Objekte löschen Java Basics - Anfänger-Themen 9
P Array-Objekte-Aufruf Java Basics - Anfänger-Themen 22
Encera Auf Objekte aus anderer Klassen zugreifen Java Basics - Anfänger-Themen 20
P Zähler Variable für mehrere Objekte Java Basics - Anfänger-Themen 6
B Objekte verschwinden beim Übersetzen Java Basics - Anfänger-Themen 5
D Zwei verschiedene Intellij Projekte, wie benutze ich wechselseitig objekte Java Basics - Anfänger-Themen 8
E Rekursiv Objekte erzeugen - geht das? Java Basics - Anfänger-Themen 2
T Collections Sind Subklassen-Objekte in Listen mit Generics erlaubt? Java Basics - Anfänger-Themen 16
F Aus eingelesener Datei korrekt Objekte erzeugen Java Basics - Anfänger-Themen 5
G Übergeordnete Objekte abrufen Java Basics - Anfänger-Themen 9
B Bin komplett am verzweifeln :( Verkettete Liste die Objekte hat Attribut auslesen Java Basics - Anfänger-Themen 14
A Objekte mit Parametern in eine Liste packen Java Basics - Anfänger-Themen 19
B Objekte, bspw. konkret Arraylists,manuell aus Speicher löschen? Java Basics - Anfänger-Themen 70
S Objekte von zwei klassen in zwei verschiedene Textdateien schreiben Java Basics - Anfänger-Themen 5
D Wie Objekte im JFrame frei bewegen lassen? Java Basics - Anfänger-Themen 3
Spandeli8 Erzeugte Objekte gegenüber Bildern hervorheben in Java Processing Java Basics - Anfänger-Themen 1
J Zwei Objekte vergleichen Java Basics - Anfänger-Themen 8
L Werte von Objekte addieren Java Basics - Anfänger-Themen 14
U Objekte in LinkedList löschen und editieren Java Basics - Anfänger-Themen 14
W Objekte über Scanner Input; ToString Probleme... Java Basics - Anfänger-Themen 4
J Problem mit einer Methode, die beliebig viele Objekte in Array speichern soll Java Basics - Anfänger-Themen 6
G Methoden Informationen aus zwei Objekte bekommen? Java Basics - Anfänger-Themen 6
P Globale Objekte Java Basics - Anfänger-Themen 2
C Nachträglich neue grafische Objekte hinzufügen Java Basics - Anfänger-Themen 7
D Interaktion zweier Objekte Java Basics - Anfänger-Themen 5
M Objekte in Array speichern und ausgeben Java Basics - Anfänger-Themen 17
S Objekte indiziert erstellen Java Basics - Anfänger-Themen 27
M Warum dürfen Objekte einer Klasse auf statische Variablen dieser Klasse referenzieren? Java Basics - Anfänger-Themen 10
M Objekte mittels equals vergleichen Java Basics - Anfänger-Themen 14
C Fernseher-Aufgabe (Methoden, Klassen und Objekte) Java Basics - Anfänger-Themen 63
N Typebound Objekte einer Arraylist hinzufügen Java Basics - Anfänger-Themen 7
A (Objekte Java Basics - Anfänger-Themen 6
Y Klassen Klassen und Objekte Java Basics - Anfänger-Themen 3
Y Klassen Klassen und Objekte mit set und get Java Basics - Anfänger-Themen 0
U Objekte in einer LinkedList sortieren Java Basics - Anfänger-Themen 5
N Methode um Objekte einer Liste hinzuzufügen Java Basics - Anfänger-Themen 1
G Java Objekte auf Duplikate testen Java Basics - Anfänger-Themen 4
B Neue Liste erstellen, wenn Objekte bestimmte Referenz hat / Gruppierung von Einträgen Java Basics - Anfänger-Themen 12

Ähnliche Java Themen

Neue Themen


Oben