diff --git a/src/Ardalis.Result/PagedInfo.cs b/src/Ardalis.Result/PagedInfo.cs index 4cd79b8..fcde565 100644 --- a/src/Ardalis.Result/PagedInfo.cs +++ b/src/Ardalis.Result/PagedInfo.cs @@ -1,4 +1,6 @@ -namespace Ardalis.Result +using System.Text.Json.Serialization; + +namespace Ardalis.Result { public class PagedInfo { @@ -11,9 +13,13 @@ public PagedInfo(long pageNumber, long pageSize, long totalPages, long totalReco TotalRecords = totalRecords; } + [JsonInclude] public long PageNumber { get; private set; } + [JsonInclude] public long PageSize { get; private set; } + [JsonInclude] public long TotalPages { get; private set; } + [JsonInclude] public long TotalRecords { get; private set; } public PagedInfo SetPageNumber(long pageNumber) diff --git a/src/Ardalis.Result/PagedResult.cs b/src/Ardalis.Result/PagedResult.cs index e75d6d7..971ee91 100644 --- a/src/Ardalis.Result/PagedResult.cs +++ b/src/Ardalis.Result/PagedResult.cs @@ -1,4 +1,6 @@ -namespace Ardalis.Result +using System.Text.Json.Serialization; + +namespace Ardalis.Result { public class PagedResult : Result { @@ -7,6 +9,7 @@ public PagedResult(PagedInfo pagedInfo, T value) : base(value) PagedInfo = pagedInfo; } - public PagedInfo PagedInfo { get; } + [JsonInclude] + public PagedInfo PagedInfo { get; init; } } } diff --git a/src/Ardalis.Result/Result.cs b/src/Ardalis.Result/Result.cs index b8811fc..9fcb122 100644 --- a/src/Ardalis.Result/Result.cs +++ b/src/Ardalis.Result/Result.cs @@ -35,15 +35,21 @@ protected Result(ResultStatus status) ValidationErrors = result.ValidationErrors, }; - public T Value { get; } + [JsonInclude] + public T Value { get; init; } [JsonIgnore] public Type ValueType => typeof(T); + [JsonInclude] public ResultStatus Status { get; protected set; } = ResultStatus.Ok; public bool IsSuccess => Status == ResultStatus.Ok; + [JsonInclude] public string SuccessMessage { get; protected set; } = string.Empty; + [JsonInclude] public string CorrelationId { get; protected set; } = string.Empty; + [JsonInclude] public IEnumerable Errors { get; protected set; } = new List(); + [JsonInclude] public List ValidationErrors { get; protected set; } = new List(); /// diff --git a/tests/Ardalis.Result.UnitTests/SystemTextJsonSerializer.cs b/tests/Ardalis.Result.UnitTests/SystemTextJsonSerializer.cs index f15f079..2ecb2ae 100644 --- a/tests/Ardalis.Result.UnitTests/SystemTextJsonSerializer.cs +++ b/tests/Ardalis.Result.UnitTests/SystemTextJsonSerializer.cs @@ -48,6 +48,19 @@ public void ShouldDeserializeResultOfReferenceType() Assert.Equivalent(expected, result); } + + + [Fact] + public void ShouldDeserializeCorrectResultType() + { + var obj = Result.NotFound("NotFound"); + + var a = JsonSerializer.Serialize(obj); + var b = JsonSerializer.Deserialize(a); + var c = JsonSerializer.Serialize(b); + + Assert.Equivalent(a, c); + } private class Foo {