@@ -349,6 +349,68 @@ public void DefaultEmptyCollectionShouldRoundTrip()
349349 Assert . Empty ( resultingArray ) ;
350350 }
351351
352+ [ Fact ]
353+ public void DefaultNullIsLossyDuringRoundTripJson ( )
354+ {
355+ // Given
356+ var serializedSchema =
357+ """
358+ {
359+ "type": ["string", "null"],
360+ "default": null
361+ }
362+ """ ;
363+ using var textWriter = new StringWriter ( ) ;
364+ var writer = new OpenApiJsonWriter ( textWriter ) ;
365+
366+ // When
367+ var schema = OpenApiModelFactory . Parse < OpenApiSchema > ( serializedSchema , OpenApiSpecVersion . OpenApi3_1 , new ( ) , out _ , "json" , SettingsFixture . ReaderSettings ) ;
368+
369+ Assert . Null ( schema . Default ) ;
370+
371+ schema . SerializeAsV31 ( writer ) ;
372+ var roundTrippedSchema = textWriter . ToString ( ) ;
373+
374+ // Then
375+ var parsedResult = JsonNode . Parse ( roundTrippedSchema ) ;
376+ var parsedExpected = JsonNode . Parse ( serializedSchema ) ;
377+ Assert . False ( JsonNode . DeepEquals ( parsedExpected , parsedResult ) ) ;
378+ var resultingDefault = parsedResult [ "default" ] ;
379+ Assert . Null ( resultingDefault ) ;
380+ }
381+
382+ [ Fact ]
383+ public void DefaultNullIsLossyDuringRoundTripYaml ( )
384+ {
385+ // Given
386+ var serializedSchema =
387+ """
388+ type:
389+ - string
390+ - 'null'
391+ default: null
392+ """ ;
393+ using var textWriter = new StringWriter ( ) ;
394+ var writer = new OpenApiYamlWriter ( textWriter ) ;
395+
396+ // When
397+ var schema = OpenApiModelFactory . Parse < OpenApiSchema > ( serializedSchema , OpenApiSpecVersion . OpenApi3_1 , new ( ) , out _ , "yaml" , SettingsFixture . ReaderSettings ) ;
398+
399+ Assert . Null ( schema . Default ) ;
400+
401+ schema . SerializeAsV31 ( writer ) ;
402+ var roundTrippedSchema = textWriter . ToString ( ) ;
403+
404+ // Then
405+ Assert . Equal (
406+ """
407+ type:
408+ - 'null'
409+ - string
410+ """ . MakeLineBreaksEnvironmentNeutral ( ) ,
411+ roundTrippedSchema . MakeLineBreaksEnvironmentNeutral ( ) ) ;
412+ }
413+
352414 [ Fact ]
353415 public async Task SerializeV31SchemaWithMultipleTypesAsV3Works ( )
354416 {
0 commit comments