From fa5103f591f76c4f7f1534bd8d21f28dc5bbb7ae Mon Sep 17 00:00:00 2001 From: Simon Cropp Date: Wed, 27 Mar 2024 22:33:42 +1100 Subject: [PATCH] dont ignore json refs (#1170) * dont ignore json refs * Create SerializationTests.Ref.verified.json --- .../SerializationTests.Ref.verified.json | 13 +++++++++++++ .../SerializationTests.Ref.verified.txt | 13 +++++++++++++ .../Serialization/SerializationTests.cs | 7 +++++++ .../Serialization/Converters/JObjectConverter.cs | 16 ++++++++++++---- 4 files changed, 45 insertions(+), 4 deletions(-) create mode 100644 src/StrictJsonTests/SerializationTests.Ref.verified.json create mode 100644 src/Verify.Tests/Serialization/SerializationTests.Ref.verified.txt diff --git a/src/StrictJsonTests/SerializationTests.Ref.verified.json b/src/StrictJsonTests/SerializationTests.Ref.verified.json new file mode 100644 index 000000000..8ffc34713 --- /dev/null +++ b/src/StrictJsonTests/SerializationTests.Ref.verified.json @@ -0,0 +1,13 @@ +{ + "a": { + "$id": "x", + "b": 1 + }, + "b": 2, + "c": { + "$ref": "#x/b" + }, + "d": { + "$ref": "#/b" + } +} \ No newline at end of file diff --git a/src/Verify.Tests/Serialization/SerializationTests.Ref.verified.txt b/src/Verify.Tests/Serialization/SerializationTests.Ref.verified.txt new file mode 100644 index 000000000..9b97f9a39 --- /dev/null +++ b/src/Verify.Tests/Serialization/SerializationTests.Ref.verified.txt @@ -0,0 +1,13 @@ +{ + a: { + $id: x, + b: 1 + }, + b: 2, + c: { + $ref: #x/b + }, + d: { + $ref: #/b + } +} \ No newline at end of file diff --git a/src/Verify.Tests/Serialization/SerializationTests.cs b/src/Verify.Tests/Serialization/SerializationTests.cs index f67cc10c3..0aca67d49 100644 --- a/src/Verify.Tests/Serialization/SerializationTests.cs +++ b/src/Verify.Tests/Serialization/SerializationTests.cs @@ -3895,6 +3895,13 @@ public class Child public Parent Parent { get; set; } } + [Fact] + public Task Ref() + { + var json = """{ "a": { "$id": "x", "b": 1 }, "b": 2, "c": { "$ref": "#x/b" }, "d": { "$ref": "#/b" } }"""; + return VerifyJson(json); + } + [Fact] public async Task CancellationToken_Cancelled() { diff --git a/src/Verify/Serialization/Converters/JObjectConverter.cs b/src/Verify/Serialization/Converters/JObjectConverter.cs index 5ac250e31..dbe574f60 100644 --- a/src/Verify/Serialization/Converters/JObjectConverter.cs +++ b/src/Verify/Serialization/Converters/JObjectConverter.cs @@ -5,14 +5,22 @@ public override void Write(VerifyJsonWriter writer, JObject value) { if (VerifierSettings.sortJsonObjects) { - var dictionary = value - .ToObject>(writer.Serializer)!; + var dictionary = new Dictionary(); + foreach (var item in value) + { + dictionary.Add(item.Key, item.Value); + } + writer.Serialize(dictionary); } else { - var dictionary = value - .ToObject(writer.Serializer)!; + var dictionary = new OrderedDictionary(); + foreach (var item in value) + { + dictionary.Add(item.Key, item.Value); + } + writer.Serialize(dictionary); } }