Guten Morgen Zusammen,
ich versuche gerade eine Json Datei zu bearbeiten, aber ich komm nicht so recht weiter.
Ich lese mir eine Json Datei ein und überprüfe einige Objekte auf null. Wenn ein bestimmter Wert null ist, soll ein Popup Fenster geöffnet werden in dem ich den Wert eintragen kann.
Dieser Wert soll dann in der Datei abgespeichert werden.
Momentan sehe ich eigentlich nur die Möglichkeit die Komplette Datei zu überschreiben. Habt ihr noch eine andere Möglichkeit?
Angehängt habe ich die Funktion mit der die Datei geöffnet wird. Mein Gedanke war, wenn die Datei bereits geöffnet ist, kann ich auch direkt den Wert abfragen, ändern und speichern.
ich versuche gerade eine Json Datei zu bearbeiten, aber ich komm nicht so recht weiter.
Ich lese mir eine Json Datei ein und überprüfe einige Objekte auf null. Wenn ein bestimmter Wert null ist, soll ein Popup Fenster geöffnet werden in dem ich den Wert eintragen kann.
Dieser Wert soll dann in der Datei abgespeichert werden.
Momentan sehe ich eigentlich nur die Möglichkeit die Komplette Datei zu überschreiben. Habt ihr noch eine andere Möglichkeit?
Angehängt habe ich die Funktion mit der die Datei geöffnet wird. Mein Gedanke war, wenn die Datei bereits geöffnet ist, kann ich auch direkt den Wert abfragen, ändern und speichern.
Java:
package MultiPackClasses;
import java.awt.event.WindowAdapter;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JOptionPane;
import javax.swing.filechooser.FileNameExtensionFilter;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import MuliPack.NeuerFrame;
import MuliPack.popUpEditSize;
import MuliPack.*;
public class getJson
{
public Boxdata loadJsonFile(String dirPath, String boxtype, Boxdata boxdaten )
{
if(dirPath =="" || dirPath == null) // Dateipfad fehlt
{
System.out.println("Load json: kein Dateipfad angegeben");
JOptionPane.showMessageDialog(null, "Ausgewählte Datei "+ boxdaten + " existiert nicht!" , "Achtung!", JOptionPane.INFORMATION_MESSAGE);
return boxdaten;
}
else
{
File file = new File(dirPath);
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.setPrettyPrinting();
gsonBuilder.serializeNulls();
Gson gsonB = gsonBuilder.create();
try
{
FileInputStream fi = new FileInputStream(file);
String content = new String(Files.readAllBytes(Paths.get(file.toURI())), "UTF-8");
JsonArray para = gsonB.fromJson(content, JsonArray.class); // Hiermit wird der Dateiinhalt Eingelesen und als Json Geparst
switch(boxtype)
{
case "boxpara":
System.out.println("Boxpara aufruf");
boxdaten.BoxGraphicsPath = para.get(2).getAsJsonObject() // Hol 3. Objekt aus dem Array
.getAsJsonObject("GENERAL") // Hole General als Objekt
.get("PICTURE").getAsString(); // Hole PRODID als String
boxdaten.BoxCardUUID = para.get(2).getAsJsonObject() // Hol 3. Objekt aus dem Array
.getAsJsonObject("GENERAL") // Hole General als Objekt
.get("UUID").getAsString(); // Hole UUID als String
boxdaten.BoxdataName = para.get(2).getAsJsonObject() // Hol 3. Objekt aus dem Array
.getAsJsonObject("DEFAULTS") // Hole Defaults als Objekt
.get("BOXDATA").getAsString(); // Hole PRODID als String
// Überpüfe ob Lenght_Outside = null ist
// !!!!!!!!!!!!!!! In dieser If Anweisung soll der Wert zurückgeschriebn werden.!!!!!!!!!!!!!!!
if (para.get(2).getAsJsonObject().getAsJsonObject("SIZE").get("LENGTH_OUTSIDE").isJsonNull())
{
System.out.println( "LENGHT_DATEN: Kein Wert vorhanden:");
String test = "";
// para.get(2).getAsJsonObject().getAsJsonObject("SIZE").add("LENGHT_OUTSIDE",test);
test = JOptionPane.showInputDialog("LENGHT_OUTSIDE", "");
para.get(2).getAsJsonObject().getAsJsonObject("SIZE").add("LENGTH_OUTSIDE",gsonB.toJsonTree(test));
System.out.println(para.get(2).toString());
// boxdaten ="";
}
else
{
System.out.println( para.get(2).getAsJsonObject().getAsJsonObject("SIZE").get("LENGTH_OUTSIDE").toString());
}
break;
case "boxdata":
boxdaten.TrimSide = holedate(para, "PARAMETERS", "TRIM_SIDE");
/* boxdaten.X = holedate(para, "PARAMETERS", "X");
boxdaten.Y = holedate(para, "PARAMETERS", "Y");
boxdaten.Z = holedate(para, "PARAMETERS", "Z");
boxdaten.W = holedate(para, "PARAMETERS", "W");
boxdaten.S = holedate(para, "PARAMETERS", "S");
boxdaten.T = holedate(para, "PARAMETERS", "T");
boxdaten.A = holedate(para, "PARAMETERS", "A");
boxdaten.B = holedate(para, "PARAMETERS", "B");
boxdaten.C = holedate(para, "PARAMETERS", "C");
System.out.println("Erledigt");
*/
// Über Hashmap
// ((HashMap<String, String> map = new HashMap<>();
//map.values().p
// mapping daten = new mapping();
boxdaten.Parameters.put("X", holedate(para, "PARAMETERS", "X"));
boxdaten.Parameters.put("Y", holedate(para, "PARAMETERS", "Y"));
boxdaten.Parameters.put("Z", holedate(para, "PARAMETERS", "Z"));
boxdaten.Parameters.put("W", holedate(para, "PARAMETERS", "W"));
boxdaten.Parameters.put("S", holedate(para, "PARAMETERS", "S"));
boxdaten.Parameters.put("T", holedate(para, "PARAMETERS", "T"));
boxdaten.Parameters.put("A", holedate(para, "PARAMETERS", "A"));
boxdaten.Parameters.put("B", holedate(para, "PARAMETERS", "B"));
boxdaten.Parameters.put("C", holedate(para, "PARAMETERS", "C"));
System.out.println("Daten aus der Map: " + boxdaten.Parameters);
break;
default:
System.out.println("Boxtype existiert nicht");
break;
}
fi.close();
return boxdaten;
} catch (IOException e)
{
System.out.println("Datei nicht VORHANDEN Fehler");
e.printStackTrace();
return boxdaten;
}
}
}
public String holedate (JsonArray para, String objekt, String value)
{
String boxdaten;
if (para.get(2).getAsJsonObject().getAsJsonObject(objekt).get(value) == null)
{
System.out.println( value + ": Variable nicht vorhanden");
boxdaten = null;
//boxdaten ="";
}
else if (para.get(2).getAsJsonObject().getAsJsonObject(objekt).get(value).isJsonNull())
{
System.out.println( value + ": Kein Wert vorhanden:");
boxdaten ="";
}
else
{
boxdaten= para.get(2).getAsJsonObject() // Hol 3. Objekt aus dem Array
.getAsJsonObject(objekt) // Hole PARAMETERS als Objekt
.get(value).getAsString(); // Hole PRODID als String
System.out.println( value + ": " +boxdaten);
}
return boxdaten;
}
}