Wie analysiert JSON eine toString-Ausgabe ?

M

MarcoJ75

Neues Mitglied
Hallo,
ich habe mal wieder eine Verständnisfrage,diesmal zu JSON. Hier erstmal der Code:


Java:
package K26;
import org.json.JSONObject;
public class SimpleVokabelJson {
public static void main(String[] args) {
        JSONObject jobj = new JSONObject();
        jobj.put("frage", "Buch");
        jobj.put("antwort", "book");
        jobj.put("fachnr", new Integer(2));
        String jsonString = jobj.toString();
        System.out.println(jsonString);
        // Ausgabe: {"frage":"Buch","fachnr":2,"antwort":"book"}

        JSONObject jvok = new JSONObject(jsonString);
        Vokabel vok = new Vokabel();
        vok.setFrage(jvok.getString("frage"));
        vok.setAntwort(jvok.getString("antwort"));
        vok.setFachnr(jvok.getInt("fachnr"));
        System.out.println(vok);

Java:
package K26;
import org.json.JSONObject;
public class Vokabel {
    private String antwort;
    private int fachnr = 1;
    private String frage;
    private Datum zuletzt = new Datum();

    public Vokabel() {
    }

    public Vokabel(JSONObject obj) {
        this.frage = obj.getString("frage");
        this.antwort = obj.getString("antwort");
        this.fachnr = obj.getInt("fachnr");
        this.zuletzt = new Datum((JSONObject) obj.get("zuletzt"));
    }

    public String getAntwort() {
        return antwort;
    }

    public int getFachnr() {
        return fachnr;
    }

    public String getFrage() {
        return frage;
    }

    public Datum getZuletzt() {
        return zuletzt;
    }

    public void setAntwort(String antwort) {
        this.antwort = antwort;
    }

    public void setFachnr(int fachnr) {
        this.fachnr = fachnr;
    }

    public void setFrage(String frage) {
        this.frage = frage;
    }

    public void setZuletzt(Datum zuletzt) {
        this.zuletzt = zuletzt;
    }


    @Override
    public String toString() {
        return frage + "/" + antwort + "(" + fachnr + ")" + "[" + zuletzt.getTag() + "." + zuletzt.getMonat() + "."
                + zuletzt.getJahr() + "]";
    }
}

Wie man sieht, wird ein JSON-Objekt angelegt, das dann mit 3 Attributen + zugehörigen Werten gefüllt wird. Die toString-Methode des JSON-Objektes wird dann in einen String gespeichert,der dann ausgegeben wird: {"frage":"Buch","fachnr":2,"antwort":"book"}
Soweit auch noch verständlich.

Im 2.Block wird ein weiteres JSON-Objekt angelegt, das mit der toString-Ausgabe des 1.JSON-Objektes gefüttert wird. Aus diesem werden dann die Objektvariablen eines Vokabel-Objektes ermittelt. Nur: wie macht Java das,d.h. woher weiß das JSON-Objekt welcher Teil dieses Strings die Attribute und Werte sind,die in die Objektvariablen des Vokabelobjektes kopieren muss ? Wenn ich mir den Konstruktor der JSON-Klasse anschaue, der ein String empfängt,so sieht der so aus:

public JSONObject(String source) throws JSONException {
this(new JSONTokener(source));
}


Wenn ich mir den Konstruktor des JSONTokener anschaue,der den String ebenfalls empfängt, dann sieht der so aus:

public JSONTokener(String s) {
this(new StringReader(s));
}


Und der Stringreader enthält das hier:
public StringReader(String s) {
this.str = s;
this.length = s.length();
}


D.h. ich sehe nirgendwo eine Stelle, wo die toString-Ausgabe des 1.JSON-Objektes analysiert wird: {"frage":"Buch","fachnr":2,"antwort":"book"}

Wie findet Java raus, welcher Teil des Strings die Werte sind, die es in das Vokabelobjekt übergeben muss ?

Kurze Anmerkung: es gibt noch eine Klasse Datum, in der ein Datum drinsteht, wann das buch zuletzt verliehen wurde. Daher stammen die Getter getTag, getMonat, getJahr.
 
kneitzel

kneitzel

Top Contributor
Dann musst Du weiter schauen, denn der folgende Code:
Code:
public JSONTokener(String s) {
  this(new StringReader(s));
}
ist ja ein Aufruf des Konstruktors JSONTokener mit eben dem new erstellten StringReader als Argument.
(Das ist dann der Konstruktor, der den Reader entgegen nimmt!)

Und ebenso musst Du natürlich auch schauen, was im JSONObject erfolgt, denn der Code, der von dir gezeigt wurde, zeigt ja nur, dass der Konstruktor einen anderen Konstruktor aufruft:

Code:
public JSONObject(String source) throws JSONException {
  this(new JSONTokener(source));
}

Das erste ist relativ unspektakulär - da geht es halt nur um das lesen des Strings in Form von einzelnen Token. Das was Dich interessiert ist wohl der Konstruktor vom JSONObject, welches einen JSONTokener entgegen nimmt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
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
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
Joew0815 Interface JSON Objekte aus Java Objekten erzeugen Java Basics - Anfänger-Themen 9
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
newcomerJava Nach doppelter Zahl eine Ausgabe Java Basics - Anfänger-Themen 10
jonny_2k12 Wie kann ich eine ArrayList aus einer Klasse in eine andere übergeben? Java Basics - Anfänger-Themen 21
S Eine Liste kopieren Java Basics - Anfänger-Themen 13
A eine neue normale String-Array von einer String-Array, die in for schleife ist, schaffen Java Basics - Anfänger-Themen 3
java3690 eine liste sortieren Java Basics - Anfänger-Themen 12
N Input/Output Eine Frage über system.out.println. Java Basics - Anfänger-Themen 10
K Übergabe des Wertes einer Variable aus main() in eine Klassenmethode Java Basics - Anfänger-Themen 8
J Wie kann ich hier eine While schleife einbauen? Java Basics - Anfänger-Themen 3
P Was genau bringt mir es ein Array in eine Liste zu bringen Java Basics - Anfänger-Themen 3
J Eine Frage zur Schreibweise == ? : Java Basics - Anfänger-Themen 3
I Wo am besten eine String Konstante initialisieren? Java Basics - Anfänger-Themen 5
N Wie teste ich eine geworfene Exception? Java Basics - Anfänger-Themen 8
B Eine Methode erstellen Java Basics - Anfänger-Themen 3
L Konstruktor für eine Map-Datei/Map-Datei einlesen Java Basics - Anfänger-Themen 5
Y Methoden Wie kann ich eine if-Abfrage bei Setters bauen? Java Basics - Anfänger-Themen 6
I Sortiert eine HashMap nicht gleich wie eine ArrayList? Java Basics - Anfänger-Themen 1
L Iterieren durch eine ArrayList. Integer Array wird übergeben Java Basics - Anfänger-Themen 17
KogoroMori21 Mit einer Schleife eine Treppe zeichnen Java Basics - Anfänger-Themen 29
J Eine Position im String durch einen Integer - Wert teilen Java Basics - Anfänger-Themen 5
M Verständnisfrage zu eine Online Aufgabe Java Basics - Anfänger-Themen 7
N Wie kann ich eine meine Variable Final machen? Java Basics - Anfänger-Themen 1
H Datentypen Was für eine Format verbirgt sich hinter dem Integer-Wert 053? Java Basics - Anfänger-Themen 2
C Methoden Java ist auch eine Insel Listing 2.40 Recursion Java Basics - Anfänger-Themen 7
F Eine Zahl mit Arrays vergleichen Java Basics - Anfänger-Themen 7
P Eine komplizierte Sache Java Basics - Anfänger-Themen 1
B Nur eine bestimmte Anzahl an Arrays ausgeben Java Basics - Anfänger-Themen 9
M Zugriff auf eine ArrayList in einer anderen Klasse Java Basics - Anfänger-Themen 4
T Wie eine Komposition garantieren Java Basics - Anfänger-Themen 5
V Array auf eine Zahl durchsuchen Java Basics - Anfänger-Themen 15
bensdt Klasse erweitern um eine Methode "void decrement()" Java Basics - Anfänger-Themen 5
S Datenbank Tabelle eine Zeile an einer bestimmten Stelle einfügen Java Basics - Anfänger-Themen 2
X Nach einem Bruch testen ob es eine ganze Zahl ist Java Basics - Anfänger-Themen 6
B Von Array nur eine bestimmte Anzahl bekommen Java Basics - Anfänger-Themen 3
C "HelloWorld" - Dateien erstellt, aber ist es eine class-Datei? Java Basics - Anfänger-Themen 2
L Muss eine HttpURLConnection geschlossen werden? Java Basics - Anfänger-Themen 2
D OOP- Eine Klasse in mehrere Klassen aufteilen Java Basics - Anfänger-Themen 7
V Erste Schritte Eine Array-Variable mit Benutzereingaben befüllen Java Basics - Anfänger-Themen 3
N Eine Zahl solange teilen bis es nicht möglich ist und die Ergebnisse ausgeben Java Basics - Anfänger-Themen 23
O Ziehen im Array um einen Schritt in eine einzige beliebige Richtung Java Basics - Anfänger-Themen 5
E Kreis soll eine Raupe darstellen Java Basics - Anfänger-Themen 37
P Alles eine Typfrage Java Basics - Anfänger-Themen 7
B Eine ganze Zahl zerlegen. Java Basics - Anfänger-Themen 4
I Klassen Eine ArrayList<Long>, die sich automatisch sortiert Java Basics - Anfänger-Themen 20
D Guten Tag mache gerade eine Umschulung zum FiSi war leider jetzt 2 Wochen Krank und wir hatten Prozendurale Programmierung. Java Basics - Anfänger-Themen 3
L Iterieren über eine CSV Datei Java Basics - Anfänger-Themen 7
W Zwei Programme sollen auf eine Klasse zugreifen Java Basics - Anfänger-Themen 18
V Wie wiederhole ich eine for-Schleife beim erreichen eines Wertes Java Basics - Anfänger-Themen 9
A Kann man eine Methode als Variable speichern und danach noch verändern? Java Basics - Anfänger-Themen 6
L Klassen Wie “installiert” man eine Klasse? Java Basics - Anfänger-Themen 2
E Datentypen Einfügen von Objekten in eine Map Java Basics - Anfänger-Themen 2
X Wo steht, ob eine Datei big, little oder bi-endian codiert ist? Java Basics - Anfänger-Themen 3
N Bewegtes Objekt soll sich um eine Parallele bewegen Java Basics - Anfänger-Themen 0
O Iterator für eine geordnete Menge Java Basics - Anfänger-Themen 134
J Lesen und schreiben in eine Datei(Anfänger- Dateizugriffe) Java Basics - Anfänger-Themen 3
M Wie lang eine Funktion/Methode? Java Basics - Anfänger-Themen 51
R Warnung, wenn eine Variable eingegeben wird Java Basics - Anfänger-Themen 6
D Richtig Vorbereiten auf eine Programmier Klausur Studium. Java Basics - Anfänger-Themen 7
A Eine Krone in der Textausgabe - Mein Code Java Basics - Anfänger-Themen 11
scratchy1 Kann man in einer Methode eine andere aufrufen? Java Basics - Anfänger-Themen 2
B CSS Klassen in eine Liste schreiben Java Basics - Anfänger-Themen 4
L Klassen Kann eine Unterklasse einer abstrakten Klasse ein Interface implementieren? Java Basics - Anfänger-Themen 2
mor16Euro Erste Schritte Wie nennt man eine While oder For schleife die nie Ausgeführt wird Java Basics - Anfänger-Themen 5
N Best Practice Rückgabe eines Terminal Befehls in eine Variable speichern Java Basics - Anfänger-Themen 27
scratchy1 Wie deklariert man eine Methode, die ein Objekt zurückgeben soll? Java Basics - Anfänger-Themen 22

Ähnliche Java Themen

Anzeige

Neue Themen


Oben