@@ -615,7 +615,10 @@ private void SerializeInternal(IOpenApiWriter writer, OpenApiSpecVersion version
615615 writer . WriteOptionalObject ( OpenApiConstants . ExternalDocs , ExternalDocs , callback ) ;
616616
617617 // example
618- writer . WriteOptionalObject ( OpenApiConstants . Example , Example , ( w , e ) => w . WriteAny ( e ) ) ;
618+ writer . WriteOptionalObject (
619+ OpenApiConstants . Example ,
620+ version < OpenApiSpecVersion . OpenApi3_1 ? GetCompatibilityExample ( ) : Example ,
621+ ( w , e ) => w . WriteAny ( e ) ) ;
619622
620623 // deprecated
621624 writer . WriteProperty ( OpenApiConstants . Deprecated , Deprecated , false ) ;
@@ -741,7 +744,7 @@ private void WriteV3CompatibilityKeywords(IOpenApiWriter writer, Action<IOpenApi
741744 writer . WriteOptionalObject ( OpenApiConstants . IfExtension , If , callback ) ;
742745 writer . WriteOptionalObject ( OpenApiConstants . ThenExtension , Then , callback ) ;
743746 writer . WriteOptionalObject ( OpenApiConstants . ElseExtension , Else , callback ) ;
744- writer . WriteOptionalCollection ( OpenApiConstants . JsonSchemaExamplesExtension , Examples , ( nodeWriter , s ) => nodeWriter . WriteAny ( s ) ) ;
747+ writer . WriteOptionalCollection ( OpenApiConstants . JsonSchemaExamplesExtension , GetCompatibilityExamplesExtension ( ) , ( nodeWriter , s ) => nodeWriter . WriteAny ( s ) ) ;
745748 }
746749
747750 internal void WriteAsItemsProperties ( IOpenApiWriter writer )
@@ -955,7 +958,7 @@ private void SerializeAsV2(
955958 writer . WriteOptionalObject ( OpenApiConstants . ExternalDocs , ExternalDocs , ( w , s ) => s . SerializeAsV2 ( w ) ) ;
956959
957960 // example
958- writer . WriteOptionalObject ( OpenApiConstants . Example , Example , ( w , e ) => w . WriteAny ( e ) ) ;
961+ writer . WriteOptionalObject ( OpenApiConstants . Example , GetCompatibilityExample ( ) , ( w , e ) => w . WriteAny ( e ) ) ;
959962
960963 // x-nullable extension
961964 SerializeNullable ( writer , OpenApiSpecVersion . OpenApi2_0 ) ;
@@ -986,7 +989,7 @@ private void SerializeAsV2(
986989 writer . WriteOptionalMap ( OpenApiConstants . PatternPropertiesExtension , PatternProperties , ( w , s ) => s . SerializeAsV2 ( w ) ) ;
987990 }
988991
989- writer . WriteOptionalCollection ( OpenApiConstants . JsonSchemaExamplesExtension , Examples , ( nodeWriter , s ) => nodeWriter . WriteAny ( s ) ) ;
992+ writer . WriteOptionalCollection ( OpenApiConstants . JsonSchemaExamplesExtension , GetCompatibilityExamplesExtension ( ) , ( nodeWriter , s ) => nodeWriter . WriteAny ( s ) ) ;
990993
991994 // extensions
992995 writer . WriteExtensions ( Extensions , OpenApiSpecVersion . OpenApi2_0 ) ;
@@ -1022,6 +1025,26 @@ private bool TrySerializeTypeProperty(IOpenApiWriter writer, OpenApiSpecVersion
10221025 return false ;
10231026 }
10241027
1028+ private JsonNode ? GetCompatibilityExample ( )
1029+ {
1030+ return Example ?? Examples ? . FirstOrDefault ( ) ;
1031+ }
1032+
1033+ private IEnumerable < JsonNode > ? GetCompatibilityExamplesExtension ( )
1034+ {
1035+ if ( Examples is null || Examples . Count == 0 )
1036+ {
1037+ return null ;
1038+ }
1039+
1040+ if ( Example is not null )
1041+ {
1042+ return Examples ;
1043+ }
1044+
1045+ return Examples . Count > 1 ? Examples . Skip ( 1 ) : null ;
1046+ }
1047+
10251048 private static bool IsPowerOfTwo ( int x )
10261049 {
10271050 return x != 0 && ( x & ( x - 1 ) ) == 0 ;
0 commit comments