Skip to content

Commit

Permalink
Merge pull request #2651 from FirelyTeam/bugfix/2583-modify-json-opti…
Browse files Browse the repository at this point in the history
…ons-instead-of-creating-new

Modify JsonSerializationOptions instead of creating a new instance
  • Loading branch information
ewoutkramer authored Jan 10, 2024
2 parents c37938f + 8aca711 commit 4be8199
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 21 deletions.
31 changes: 11 additions & 20 deletions src/Hl7.Fhir.Base/Serialization/JsonSerializerOptionsExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -79,49 +79,40 @@ FhirJsonPocoDeserializerSettings deserializerSettings
/// </summary>
public static JsonSerializerOptions ForFhir(this JsonSerializerOptions options, FhirJsonConverterFactory converter)
{
var result = new JsonSerializerOptions(options)
{
Encoder = System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping,
};

result.Converters.Add(converter);
return result;
options.Converters.Add(converter);
options.Encoder = System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping;

return options;
}

/// <summary>
/// Initialize the options to serialize using the JsonFhirConverter, producing compact output without whitespace.
/// </summary>
public static JsonSerializerOptions ForFhir<F>(this JsonSerializerOptions options, FhirJsonConverter<F> converter) where F : Base
{
var result = new JsonSerializerOptions(options)
{
Encoder = System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping,
};
options.Converters.Add(converter);
options.Encoder = System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping;

result.Converters.Add(converter);
return result;
return options;
}

/// <summary>
/// Initialize the options to serialize using the JsonFhirConverter, producing compact output without whitespace.
/// </summary>
public static JsonSerializerOptions Compact(this JsonSerializerOptions options)
{
return new JsonSerializerOptions(options)
{
WriteIndented = false
};
options.WriteIndented = false;
return options;
}

/// <summary>
/// Initialize the options to serialize using the JsonFhirConverter, producing pretty output.
/// </summary>
public static JsonSerializerOptions Pretty(this JsonSerializerOptions options)
{
return new JsonSerializerOptions(options)
{
WriteIndented = true
};
options.WriteIndented = true;
return options;
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,8 @@ public void RoundtripEdgeCases()
{
var (poco, expected) = getEdgecases();

var options = BaseOptions.Pretty();
var options = new JsonSerializerOptions().ForFhir(typeof(TestPatient).Assembly).Pretty();

string actual = JsonSerializer.Serialize(poco, options);

var errors = new List<string>();
Expand Down

0 comments on commit 4be8199

Please sign in to comment.