Wie analysiert JSON eine toString-Ausgabe ?

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.
 
K

kneitzel

Gast
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
I JSON in Objekt umwandeln Java Basics - Anfänger-Themen 3
J JSON mit einem JPanel Java Basics - Anfänger-Themen 3
J Objekte in JSON speichern?? Java Basics - Anfänger-Themen 1
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
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
Kerstininer Vererbung Hilfe beim lernen von Objektorientierung für eine Klausur Java Basics - Anfänger-Themen 10
K Warum wird hier nur etwas in eine txt Datei geschrieben und nicht in alle drei (InputStream/OutputStream/Reader/Writer) Java Basics - Anfänger-Themen 1
I In unterschiedlichen Applikation Zugriff auf eine gemeinsame Anwendung? Java Basics - Anfänger-Themen 8
D 2 ArrayListen gleich sortieren bzw. eine Liste anhand einer anderen Sortieren Java Basics - Anfänger-Themen 6
T Ich brauche eine Schleife die eine beliebige Zahl so lange durch 10 teilt bis zur Null Java Basics - Anfänger-Themen 5
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
J Eine konzeptionelle Frage zu OOP Java Basics - Anfänger-Themen 3
N Ich kriege ganze zeit die Fehlermeldung "Inhalt der Zwischenablage kann nicht in die ausgewählten Elemente eingefügt werden" hat jemand eine Lösung? Java Basics - Anfänger-Themen 6
M Vergleichen, ob eine Liste länger als andere ist Java Basics - Anfänger-Themen 6
T Methode soll etwas ausrechnen und zurückgeben (klappt nd) hat wer eine Idee? Java Basics - Anfänger-Themen 11
Shadowrunner Variablen Gibt es eine Möglichkeit die Ziffern/Stellen einer Zahl fest zu legen? Java Basics - Anfänger-Themen 3
Kingdako Wie löse ich eine Mathematische Formel mit Arrays und Schleifen? Java Basics - Anfänger-Themen 32
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
G Wie wartet man bis ein URL eine Antwort zurückgibt? Java Basics - Anfänger-Themen 5
berserkerdq2 Intelij, wie kann ich einstellen, dass die aktuelle Klasse ausgeführt wird, wenn ich aufs Startsymbol drücke, gibts da eine Tastenkombination? Java Basics - Anfänger-Themen 11
S 2 Reihen ratio-btn, eine Reihe funktioniert andere nicht Java Basics - Anfänger-Themen 4
T Eingabe durch eine Zahl dividieren nachgucken? Java Basics - Anfänger-Themen 4
M mit Maven eine ausführbare Jar bauen Java Basics - Anfänger-Themen 7
P Java Selenium . Parameterized.Parameters erzeugt eine Fehlermeldung Java Basics - Anfänger-Themen 14
J Zugriff auf eine 2. Klasse die per UI-Designer erstellt wurde Java Basics - Anfänger-Themen 1
M Eine Funktion zuweisen Java Basics - Anfänger-Themen 3
J Eine theoretische Frage zur Praxis - JPanel oder Canvas Java Basics - Anfänger-Themen 5
A Methoden Guten Tag , ich wollte so machen dass wenn meine frog an eine fly/bee geht dann an meine Tafel geht der zahl +1 hoch. Java Basics - Anfänger-Themen 2
A Wie führe ich eine Batch-Datei von meiner Java-Anwendung aus? Java Basics - Anfänger-Themen 18
J Beim Start des Programms zB. eine Linie in JPanel ausgeben Java Basics - Anfänger-Themen 4
L Methoden Eine Methode um zu testen ob es ein Nachbar gibt Java Basics - Anfänger-Themen 10
S Eine Idee umsetzen ganz schnell!? Java Basics - Anfänger-Themen 68
I Grundsatzfrage: Belegt eine Referenz auf 'null' RAM, und wenn ja - wieviel ;-) ? Java Basics - Anfänger-Themen 5
jeff98 Wie kann man in Java eine Zeichenformation ausgeben? Java Basics - Anfänger-Themen 9
K loop pausieren für eine bestimmte Anzahl? Java Basics - Anfänger-Themen 1
_user_q Wie eine Methode/Funktion aus einer Klasse mit Constructor aufrufen? Java Basics - Anfänger-Themen 20
Thomas06 Wie kann man mithilfe von boolean herausfinden ob eine zahl durch 5 und 7 teilbart ist ? Java Basics - Anfänger-Themen 7
M Prüfen on eine Zahl im String enthalten ist Java Basics - Anfänger-Themen 3
U jUnit 5 Test für eine addMethode Java Basics - Anfänger-Themen 18
frager2345 Singleton-Muster Java ->Nur eine Instanz einer Klasse erzeugen können Java Basics - Anfänger-Themen 45
A Eclipse IDE - Wie bekomme ich eine ältere Version Java Basics - Anfänger-Themen 6
F Wie kann ich eine Funktion schreiben, die nur in bestimmten Fällen einen Wert zurückgibt? Java Basics - Anfänger-Themen 5
berserkerdq2 Warum muss man manchmal in der RUnmethode sleep in eine schleife tun? Java Basics - Anfänger-Themen 9
berserkerdq2 Findet eine parallele Verarbeitung in Java bei Threads erst statt, wenn man die Methoden auch synchronized? Und wie sieht bei Conditions aus? Java Basics - Anfänger-Themen 8
berserkerdq2 Wozu benötigt man den BiPredicate, kann ich nicht einfach eine normale Methode nutzen, statt BiPredicate? Java Basics - Anfänger-Themen 3
berserkerdq2 Habe eine Klasse, welche public ist, diese hat eine public Methode, die nicht static ist. Wenn ich nun versuche aufzurufen Probleme? Java Basics - Anfänger-Themen 8
berserkerdq2 Zwei Klassen Erben von der Klasse A, die eine Klasse kann ich an Methoden übergeben, die als Parameter A haben, die andere nicht? Java Basics - Anfänger-Themen 3
berserkerdq2 Sende eine Nachricht an den Client und leere den Ausgabestorm, was ist damit genau gemeint? Java Basics - Anfänger-Themen 3
S Eine Variable in einem Array speichern Java Basics - Anfänger-Themen 5
sserio Prüfen, ob eine Zahl eine periodische Zahl ist Java Basics - Anfänger-Themen 20
L Anpassung der Spaltenbreite auch auf eine zweite Tabelle anwenden Java Basics - Anfänger-Themen 8
NadimArazi Wie kann ich eine collision detection für die Paddles in meinem Pong Programm hinzufügen? Java Basics - Anfänger-Themen 4
JordenJost Java ist auch eine Insel für Anfänger Java Basics - Anfänger-Themen 2
berserkerdq2 Warum soll ich shuffle nutzen, um bei Rückgabewert Collection eine Liste zurückzugeben? Java Basics - Anfänger-Themen 3
berserkerdq2 Ich gebe eine ArrayList als List zurück per MEthode, wie kann ich nun aber die ArrayList speichern? Java Basics - Anfänger-Themen 46

Ähnliche Java Themen

Neue Themen


Oben