diff --git a/app/MindWork AI Studio/Settings/DataModel/MetadataJsonConverter.cs b/app/MindWork AI Studio/Settings/DataModel/MetadataJsonConverter.cs new file mode 100644 index 00000000..f800ef8a --- /dev/null +++ b/app/MindWork AI Studio/Settings/DataModel/MetadataJsonConverter.cs @@ -0,0 +1,51 @@ +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace AIStudio.Settings.DataModel; + +public class MetadataJsonConverter : JsonConverter +{ + public override Metadata? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + + using (var jsonDoc = JsonDocument.ParseValue(ref reader)) + { + var root = jsonDoc.RootElement; + + if (root.TryGetProperty("Text", out _)) + { + return JsonSerializer.Deserialize(root.GetRawText(), options); + } + else if (root.TryGetProperty("Pdf", out _)) + { + return JsonSerializer.Deserialize(root.GetRawText(), options); + } + else if (root.TryGetProperty("Spreadsheet", out _)) + { + return JsonSerializer.Deserialize(root.GetRawText(), options); + } + else if (root.TryGetProperty("Presentation", out _)) + { + return JsonSerializer.Deserialize(root.GetRawText(), options); + } + else if (root.TryGetProperty("Image", out _)) + { + return JsonSerializer.Deserialize(root.GetRawText(), options); + } + else if (root.TryGetProperty("Document", out _)) + { + return JsonSerializer.Deserialize(root.GetRawText(), options); + } + else + { + // Unbekannter Typ + return null; + } + } + } + + public override void Write(Utf8JsonWriter writer, Metadata value, JsonSerializerOptions options) + { + throw new NotImplementedException(); + } +} \ No newline at end of file