From 874c0fcae694268a50d1fb402031dd4082a21f8d Mon Sep 17 00:00:00 2001 From: Michael Hoffmeister Date: Fri, 7 Mar 2025 23:28:52 +0100 Subject: [PATCH] * intermediate save --- src/AasxCsharpLibrary/AdminShellPackageEnv.cs | 52 ++++++------------- .../DispEditHelperMiniModules.cs | 28 +++++++--- 2 files changed, 37 insertions(+), 43 deletions(-) diff --git a/src/AasxCsharpLibrary/AdminShellPackageEnv.cs b/src/AasxCsharpLibrary/AdminShellPackageEnv.cs index 3dcf74dc..30325999 100644 --- a/src/AasxCsharpLibrary/AdminShellPackageEnv.cs +++ b/src/AasxCsharpLibrary/AdminShellPackageEnv.cs @@ -199,51 +199,29 @@ public static AasCore.Aas3_0.Environment DeserializeXmlFromStreamWithCompat(Stre // nope! return null; } - // dead-csharp off - //public static JsonSerializer BuildDefaultAasxJsonSerializer() - //{ - // var serializer = new JsonSerializer(); - // serializer.Converters.Add( - // new AdminShellConverters.JsonAasxConverter( - // "modelType", "name")); - // return serializer; - //} + public static T DeserializeFromJSON(string data) where T : IReferable { - //using (var tr = new StringReader(data)) - //{ - //var serializer = BuildDefaultAasxJsonSerializer(); - //var rf = (T)serializer.Deserialize(tr, typeof(T)); - var node = System.Text.Json.Nodes.JsonNode.Parse(data); var rf = Jsonization.Deserialize.IReferableFrom(node); return (T)rf; - //} } - //public static T DeserializeFromJSON(JToken obj) where T : IReferable - //{ - // if (obj == null) - // return default(T); - // var serializer = BuildDefaultAasxJsonSerializer(); - // var rf = obj.ToObject(serializer); - // return rf; - //} - - ///// - ///// Use this, if DeserializeFromJSON is too tight. - ///// - //public static T DeserializePureObjectFromJSON(string data) - //{ - // using (var tr = new StringReader(data)) - // { - // //var serializer = BuildDefaultAasxJsonSerializer(); - // //var rf = (T)serializer.Deserialize(tr, typeof(T)); - // return null; - // } - //} - // dead-csharp on + /// + /// Use this to deserialize flexible JSON "coming from the outside" + /// + public static T DeserializeAdaptiveFromJSON(string jsonInput) where T : IClass + { + using (JsonTextReader reader = new JsonTextReader(new StringReader(jsonInput))) + { + JsonSerializer serializer = new JsonSerializer(); + serializer.Converters.Add(new AdminShellConverters.AdaptiveAasIClassConverter( + AdminShellConverters.AdaptiveAasIClassConverter.ConversionMode.AasCore)); + var res = serializer.Deserialize(reader); + return res; + } + } } /// diff --git a/src/AasxPackageLogic/DispEditHelperMiniModules.cs b/src/AasxPackageLogic/DispEditHelperMiniModules.cs index fea8d838..cb5ee0ea 100644 --- a/src/AasxPackageLogic/DispEditHelperMiniModules.cs +++ b/src/AasxPackageLogic/DispEditHelperMiniModules.cs @@ -48,7 +48,15 @@ private bool PasteQualifierTextIntoExisting( string jsonInput, Aas.IQualifier qCurr) { - var qIn = JsonConvert.DeserializeObject(jsonInput); + // var qIn = JsonConvert.DeserializeObject(jsonInput); + var qIn = AdminShellSerializationHelper.DeserializeAdaptiveFromJSON(jsonInput); + + //JsonTextReader reader = new JsonTextReader(new StringReader(jsonInput)); + //JsonSerializer serializer = new JsonSerializer(); + //serializer.Converters.Add(new AdminShellConverters.AdaptiveAasIClassConverter( + // AdminShellConverters.AdaptiveAasIClassConverter.ConversionMode.AasCore)); + //var qIn = serializer.Deserialize(reader); + if (qCurr != null && qIn != null) { qCurr.Type = qIn.Type; @@ -317,8 +325,12 @@ public void QualifierHelper( } break; case 3: - var jsonStr = JsonConvert.SerializeObject( - qualifiers[storedI], Formatting.Indented); + var jsonStr = Aas.Jsonization.Serialize.ToJsonObject(qualifiers[storedI]) + .ToJsonString(new System.Text.Json.JsonSerializerOptions() + { + WriteIndented = true + }); + this.context?.ClipboardSet(new AnyUiClipboardData(jsonStr)); Log.Singleton.Info("Qualified serialized to clipboard."); break; @@ -940,7 +952,7 @@ public void ExtensionHelper( catch (Exception ex) { Log.Singleton.Error( - ex, $"While show Qualifier presets ({pfn})"); + ex, $"While show Extension presets ({pfn})"); } } @@ -1024,8 +1036,12 @@ public void ExtensionHelper( } break; case 3: - var jsonStr = JsonConvert.SerializeObject( - extensions[storedI], Formatting.Indented); + var jsonStr = Aas.Jsonization.Serialize.ToJsonObject(extensions[storedI]) + .ToJsonString(new System.Text.Json.JsonSerializerOptions() + { + WriteIndented = true + }); + this.context?.ClipboardSet(new AnyUiClipboardData(jsonStr)); Log.Singleton.Info("Extension serialized to clipboard."); break;