Browse Source

Fix for IJsonWritten not working

Brad Robinson 1 week ago
parent
commit
90c8e6c358

+ 56 - 0
Topten.JsonKit.Test/TestsEvents.cs

@@ -44,6 +44,42 @@ namespace TestCases
         }
     }
 
+    [Json]
+    class ObjectEvents : IJsonLoaded, IJsonLoading, IJsonLoadField, IJsonWriting, IJsonWritten
+    {
+        public int IntField;
+
+        [JsonExclude] public bool loading;
+        [JsonExclude] public bool loaded;
+        [JsonExclude] public bool fieldLoaded;
+
+        void IJsonLoaded.OnJsonLoaded(IJsonReader r)
+        {
+            loaded = true;
+        }
+
+        void IJsonLoading.OnJsonLoading(IJsonReader r)
+        {
+            loading = true;
+        }
+
+        bool IJsonLoadField.OnJsonField(IJsonReader r, string key)
+        {
+            fieldLoaded = true;
+            return false;
+        }
+
+        void IJsonWriting.OnJsonWriting(IJsonWriter w)
+        {
+            w.WriteRaw("/* OnJsonWriting */");
+        }
+
+        void IJsonWritten.OnJsonWritten(IJsonWriter w)
+        {
+            w.WriteRaw("/* OnJsonWritten */");
+        }
+    }
+
 
     [Obfuscation(Exclude = true, ApplyToMembers = true)]
     public class TestsEvents
@@ -67,5 +103,25 @@ namespace TestCases
             Assert.Contains("OnJsonWriting", json);
             Assert.Contains("OnJsonWritten", json);
         }
+
+        [Fact]
+        public void TestObjectLoadEvents()
+        {
+            var o2 = Json.Parse<ObjectEvents>("{\"IntField\":23}");
+            Assert.True(o2.loading);
+            Assert.True(o2.loaded);
+            Assert.True(o2.fieldLoaded);
+        }
+
+        [Fact]
+        public void TestObjectWriteEvents()
+        {
+            var o = new ObjectEvents();
+            o.IntField = 23;
+
+            var json = Json.Format(o);
+            Assert.Contains("OnJsonWriting", json);
+            Assert.Contains("OnJsonWritten", json);
+        }
     }
 }

+ 1 - 1
Topten.JsonKit.Test/Topten.JsonKit.Test.csproj

@@ -3,7 +3,7 @@
   <Import Project="../buildtools/Topten.props" />
 
   <PropertyGroup>
-    <TargetFramework>netcoreapp3.1</TargetFramework>
+    <TargetFramework>net6.0</TargetFramework>
     <IsPackable>false</IsPackable>
   </PropertyGroup>
 

+ 2 - 2
Topten.JsonKit/Emit.cs

@@ -303,9 +303,9 @@ namespace Topten.JsonKit
                     else
                     {
                         il.Emit(OpCodes.Ldloc, locTypedObj);
-                        il.Emit(OpCodes.Castclass, typeof(IJsonWriting));
+                        il.Emit(OpCodes.Castclass, typeof(IJsonWritten));
                         il.Emit(OpCodes.Ldarg_0);
-                        il.Emit(OpCodes.Callvirt, typeof(IJsonWriting).GetMethod("OnJsonWritten", new Type[] { typeof(IJsonWriter) }));
+                        il.Emit(OpCodes.Callvirt, typeof(IJsonWritten).GetMethod("OnJsonWritten", new Type[] { typeof(IJsonWriter) }));
                     }
                 }
 

+ 2 - 2
Topten.JsonKit/Topten.JsonKit.csproj

@@ -3,7 +3,7 @@
   <Import Project="../buildtools/Topten.props" />
 
   <PropertyGroup>
-    <TargetFrameworks>net46;netcoreapp2.1;net5.0</TargetFrameworks>
+    <TargetFrameworks>net6.0</TargetFrameworks>
     <PublishRepositoryUrl>true</PublishRepositoryUrl>
     <AllowedOutputExtensionsInPackageBuildOutputFolder>$(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb</AllowedOutputExtensionsInPackageBuildOutputFolder>
     <XXDefineConstants>JSONKIT_NO_EMIT</XXDefineConstants>
@@ -13,7 +13,7 @@
     <TtsCodeSign>True</TtsCodeSign>
     <GenerateDocumentationFile>True</GenerateDocumentationFile>
     <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
-    <Copyright>Copyright © 2014-2021 Topten Software.  All Rights Reserved</Copyright>
+    <Copyright>Copyright © 2014-2026 Topten Software.  All Rights Reserved</Copyright>
     <PackageLicenseExpression>Apache-2.0</PackageLicenseExpression>
     <PackageIcon>nuget-icon.png</PackageIcon>
     <PackageProjectUrl>https://github.com/toptensoftware/jsonkit</PackageProjectUrl>