From 81b82adab2998d887e342052d8fe5f46fad1ef27 Mon Sep 17 00:00:00 2001 From: Bart Koelman <10324372+bkoelman@users.noreply.github.com> Date: Wed, 19 Jun 2024 05:43:42 +0200 Subject: [PATCH] Fixed: return empty object instead of data:null in operation results --- .../WriteOnlyDocumentConverter.cs | 23 ++++++++++++++++++- .../Mixed/AtomicSerializationTests.cs | 4 +--- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/JsonApiDotNetCore/Serialization/JsonConverters/WriteOnlyDocumentConverter.cs b/src/JsonApiDotNetCore/Serialization/JsonConverters/WriteOnlyDocumentConverter.cs index 2597afacac..a8f3e7f81e 100644 --- a/src/JsonApiDotNetCore/Serialization/JsonConverters/WriteOnlyDocumentConverter.cs +++ b/src/JsonApiDotNetCore/Serialization/JsonConverters/WriteOnlyDocumentConverter.cs @@ -61,7 +61,28 @@ public override void Write(Utf8JsonWriter writer, Document value, JsonSerializer if (!value.Results.IsNullOrEmpty()) { writer.WritePropertyName(AtomicResultsText); - WriteSubTree(writer, value.Results, options); + writer.WriteStartArray(); + + foreach (AtomicResultObject result in value.Results) + { + writer.WriteStartObject(); + + if (result.Data.IsAssigned) + { + writer.WritePropertyName(DataText); + WriteSubTree(writer, result.Data, options); + } + + if (!result.Meta.IsNullOrEmpty()) + { + writer.WritePropertyName(MetaText); + WriteSubTree(writer, result.Meta, options); + } + + writer.WriteEndObject(); + } + + writer.WriteEndArray(); } if (!value.Errors.IsNullOrEmpty()) diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/AtomicOperations/Mixed/AtomicSerializationTests.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/AtomicOperations/Mixed/AtomicSerializationTests.cs index 4f6a2f0a3c..fc6d366f94 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/AtomicOperations/Mixed/AtomicSerializationTests.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/AtomicOperations/Mixed/AtomicSerializationTests.cs @@ -101,9 +101,7 @@ await _testContext.RunOnDatabaseAsync(async dbContext => "self": "http://localhost/operations" }, "atomic:results": [ - { - "data": null - }, + {}, { "data": { "type": "textLanguages",