| 

.NET C# Java Javascript Exception

2
Hallo Leute, eine weitere Frage zu JSON. Nachdem ich die JSON-Datei nun einlesen konnte, möchte ich diese erweitern. Anhand einer erstellten GUI möchte ich via Textfelder die Attribute der JSONObjekte übergeben.

JSONObject DbModels = new JSONObject();
File filename = new File("dbsettings.json");

DbModels.put("driver", textFieldDriver.getText());
DbModels.put("url", textFieldURL.getText());
DbModels.put("schema", textFieldSchema.getText());
DbModels.put("name", textFieldDBname.getText());

try {
System.out.println("Writting Data into JSONfile ...");
System.out.println(DbModels);
FileWriter jsonFileWriter = new FileWriter(filename, true);
jsonFileWriter.write(DbModels.toJSONString());
jsonFileWriter.flush();
jsonFileWriter.close();
System.out.println("Done!");
} catch (IOException e) {
e.printStackTrace();
}
JOptionPane.showMessageDialog(null, "Die Datenbank wurde erfolgreich gespeichert!", "Information", JOptionPane.INFORMATION_MESSAGE);
setVisible(false);


Die führt aber zu der Ausgabe, dass das Objekt außerhalb des Arrays gespeichert wird. Wie ich kann das ändern??

Ausgabe:
[{
"driver": "oracle.jdbc.driver.OracleDriver",
"url": "Link1",
"schema": "Schema1",
"name": "Database1"
}, {
"driver": "oracle.jdbc.driver.OracleDriver",
"url": "Link2",
"schema": "Schema2",
"name": "Database2"
}]{"schema":"test3","name":"test4","driver":"test1","url":"test2"}


Vielen Dank für Tipps und Hilfestellungen!
09.02.2017
deli_gicik 6 1 5
2 Antworten
1
Wenn ich die Ausführungen zur EE-Klasse JsonObject() richtig verstehe (siehe hier), dann muss das Objekt komplett neu aufgebaut werden. Eine einfache Ergänzung ist mit den Objektmethoden nicht möglich.
Hier das Beispiel aus obigen Link:
JsonObject value = Json.createObjectBuilder()
.add("firstName", "John")
.add("lastName", "Smith")
.add("age", 25)
.add("address", Json.createObjectBuilder()
.add("streetAddress", "21 2nd Street")
.add("city", "New York")
.add("state", "NY")
.add("postalCode", "10021"))
.add("phoneNumber", Json.createArrayBuilder()
.add(Json.createObjectBuilder()
.add("type", "home")
.add("number", "212 555-1234"))
.add(Json.createObjectBuilder()
.add("type", "fax")
.add("number", "646 555-4567")))
.build();

Das Ergebnis kann weggeschrieben werden.

Eine Alternative, die ich mir noch vorstellen könnte, wäre:
Man verwendet die Stringdarstellung des JSON-Objekts und manipuliert den String direkt und wandelt das Ergebnis wieder in ein JSON-Objekt.

Vielleicht hilft es ein wenig weiter...
10.02.2017
edvservice 1,3k 1 6
Ich glaube, ich habe folgendes übersehen:
Sie erzeugen ein neues JSON-Objekt. Müsste dieses Objekt nicht an eine DBModels-Auflistung angehängt werden, die als Feld serialisiert wird. Jetzt serialisieren Sie ein eingelesenes Feld (= 1. Objekt) + ein neues Objekt.
edvservice 10.02.2017
Erstmal danke für Ihre Hilfestellung, habe das Problem nun gelöst. Mein Ziel war es eine vorhandene JSON-Datei einzulesen und diese an eine Arraylist zu übergeben, damit man diese erweitern kann. Nach der Erweiterung sollte die Arraylist wieder in eine JSON-Datei geschrieben werden, so dass sie beim nächsten Einlesen, komplett geladen und bearbeitet werden kann. Gelöst mit FileWriter und einer For-Schleife, die die Struktur der JSON-Datei angibt.
deli_gicik 10.02.2017
0
I am very eager to know how to get followers on twitter online without any efforts looking for the tool which makes me get it.
28.08.2017

Stelle deine Array-Frage jetzt!