Moin,
ich habe ein Projekt in C# angefangen und bin gerade dabei es in Java fortzuführen. Komme jetzt bei einer Sache nicht weiter. Geht darum ein Json-String in ein Objekt umzuwandeln und das ganze generisch.
Wie übersetzt man diesen Code am besten in Java?
Mein Ansatz sieht so aus:
Und das hier ist der Aufruf:
Die Settings Klasse ist ein Teil der Json-Klassenstruktur. Die Load-Klasse passte nirgendwo anders rein, also habe ich sie hier reingetan. Hoffe, das geht so, in C# gings jedenfalls. IntelliJ meldet auch keine Fehler, aber ich bekomme beim Builden eine java.lang.ClassCastException im Aufruf in der Load Klasse (Exception in thread "main" java.lang.ClassCastException: class java.util.LinkedHashMap cannot be cast to class nbaStats.resources.settings.Settings).
Würde mich freuen, wenn mir jemand weiterhelfen kann.
ich habe ein Projekt in C# angefangen und bin gerade dabei es in Java fortzuführen. Komme jetzt bei einer Sache nicht weiter. Geht darum ein Json-String in ein Objekt umzuwandeln und das ganze generisch.
Wie übersetzt man diesen Code am besten in Java?
C#:
public static T GetJsonObject<T>(string path)
{
string json = File.ReadAllText(_directory + path);
return JsonConvert.DeserializeObject<T>(json);
}
Mein Ansatz sieht so aus:
Java:
public class ReadJson {
public static <T> T get(String filePath) throws IOException {
String json = Files.readString(Paths.get(filePath));
ObjectMapper mapper = new ObjectMapper();
return (T) mapper.readValue(json, new TypeReference<T>() {});
}
}
Und das hier ist der Aufruf:
Java:
public class Settings
{
public Api api;
public Data data;
public static Settings Load()
{
Settings settings = null;
try {
settings = ReadJson.<Settings>get("settings.json");
} catch (IOException e) {
e.printStackTrace();
}
return settings;
}
}
Die Settings Klasse ist ein Teil der Json-Klassenstruktur. Die Load-Klasse passte nirgendwo anders rein, also habe ich sie hier reingetan. Hoffe, das geht so, in C# gings jedenfalls. IntelliJ meldet auch keine Fehler, aber ich bekomme beim Builden eine java.lang.ClassCastException im Aufruf in der Load Klasse (Exception in thread "main" java.lang.ClassCastException: class java.util.LinkedHashMap cannot be cast to class nbaStats.resources.settings.Settings).
Würde mich freuen, wenn mir jemand weiterhelfen kann.