@@ -620,7 +620,10 @@ private void SerializeInternal(IOpenApiWriter writer, OpenApiSpecVersion version
620620 writer . WriteOptionalObject ( OpenApiConstants . ExternalDocs , ExternalDocs , callback ) ;
621621
622622 // example
623- writer . WriteOptionalObject ( OpenApiConstants . Example , Example , ( w , e ) => w . WriteAny ( e ) ) ;
623+ writer . WriteOptionalObject (
624+ OpenApiConstants . Example ,
625+ version < OpenApiSpecVersion . OpenApi3_1 ? GetCompatibilityExample ( ) : Example ,
626+ ( w , e ) => w . WriteAny ( e ) ) ;
624627
625628 // deprecated
626629 writer . WriteProperty ( OpenApiConstants . Deprecated , Deprecated , false ) ;
@@ -746,7 +749,7 @@ private void WriteV3CompatibilityKeywords(IOpenApiWriter writer, Action<IOpenApi
746749 writer . WriteOptionalObject ( OpenApiConstants . IfExtension , If , callback ) ;
747750 writer . WriteOptionalObject ( OpenApiConstants . ThenExtension , Then , callback ) ;
748751 writer . WriteOptionalObject ( OpenApiConstants . ElseExtension , Else , callback ) ;
749- writer . WriteOptionalCollection ( OpenApiConstants . JsonSchemaExamplesExtension , Examples , ( nodeWriter , s ) => nodeWriter . WriteAny ( s ) ) ;
752+ writer . WriteOptionalCollection ( OpenApiConstants . JsonSchemaExamplesExtension , GetCompatibilityExamplesExtension ( ) , ( nodeWriter , s ) => nodeWriter . WriteAny ( s ) ) ;
750753 }
751754
752755 internal void WriteAsItemsProperties ( IOpenApiWriter writer )
@@ -960,7 +963,7 @@ private void SerializeAsV2(
960963 writer . WriteOptionalObject ( OpenApiConstants . ExternalDocs , ExternalDocs , ( w , s ) => s . SerializeAsV2 ( w ) ) ;
961964
962965 // example
963- writer . WriteOptionalObject ( OpenApiConstants . Example , Example , ( w , e ) => w . WriteAny ( e ) ) ;
966+ writer . WriteOptionalObject ( OpenApiConstants . Example , GetCompatibilityExample ( ) , ( w , e ) => w . WriteAny ( e ) ) ;
964967
965968 // x-nullable extension
966969 SerializeNullable ( writer , OpenApiSpecVersion . OpenApi2_0 ) ;
@@ -991,7 +994,7 @@ private void SerializeAsV2(
991994 writer . WriteOptionalMap ( OpenApiConstants . PatternPropertiesExtension , PatternProperties , ( w , s ) => s . SerializeAsV2 ( w ) ) ;
992995 }
993996
994- writer . WriteOptionalCollection ( OpenApiConstants . JsonSchemaExamplesExtension , Examples , ( nodeWriter , s ) => nodeWriter . WriteAny ( s ) ) ;
997+ writer . WriteOptionalCollection ( OpenApiConstants . JsonSchemaExamplesExtension , GetCompatibilityExamplesExtension ( ) , ( nodeWriter , s ) => nodeWriter . WriteAny ( s ) ) ;
995998
996999 // extensions
9971000 writer . WriteExtensions ( Extensions , OpenApiSpecVersion . OpenApi2_0 ) ;
@@ -1027,6 +1030,26 @@ private bool TrySerializeTypeProperty(IOpenApiWriter writer, OpenApiSpecVersion
10271030 return false ;
10281031 }
10291032
1033+ private JsonNode ? GetCompatibilityExample ( )
1034+ {
1035+ return Example ?? Examples ? . FirstOrDefault ( ) ;
1036+ }
1037+
1038+ private IEnumerable < JsonNode > ? GetCompatibilityExamplesExtension ( )
1039+ {
1040+ if ( Examples is null || Examples . Count == 0 )
1041+ {
1042+ return null ;
1043+ }
1044+
1045+ if ( Example is not null )
1046+ {
1047+ return Examples ;
1048+ }
1049+
1050+ return Examples . Count > 1 ? Examples . Skip ( 1 ) : null ;
1051+ }
1052+
10301053 private static bool IsPowerOfTwo ( int x )
10311054 {
10321055 return x != 0 && ( x & ( x - 1 ) ) == 0 ;
0 commit comments