@@ -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,6 +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 ) ;
752+ writer . WriteOptionalCollection ( OpenApiConstants . JsonSchemaExamplesExtension , GetCompatibilityExamplesExtension ( ) , ( nodeWriter , s ) => nodeWriter . WriteAny ( s ) ) ;
749753 }
750754
751755 internal void WriteAsItemsProperties ( IOpenApiWriter writer )
@@ -959,7 +963,7 @@ private void SerializeAsV2(
959963 writer . WriteOptionalObject ( OpenApiConstants . ExternalDocs , ExternalDocs , ( w , s ) => s . SerializeAsV2 ( w ) ) ;
960964
961965 // example
962- writer . WriteOptionalObject ( OpenApiConstants . Example , Example , ( w , e ) => w . WriteAny ( e ) ) ;
966+ writer . WriteOptionalObject ( OpenApiConstants . Example , GetCompatibilityExample ( ) , ( w , e ) => w . WriteAny ( e ) ) ;
963967
964968 // x-nullable extension
965969 SerializeNullable ( writer , OpenApiSpecVersion . OpenApi2_0 ) ;
@@ -990,6 +994,8 @@ private void SerializeAsV2(
990994 writer . WriteOptionalMap ( OpenApiConstants . PatternPropertiesExtension , PatternProperties , ( w , s ) => s . SerializeAsV2 ( w ) ) ;
991995 }
992996
997+ writer . WriteOptionalCollection ( OpenApiConstants . JsonSchemaExamplesExtension , GetCompatibilityExamplesExtension ( ) , ( nodeWriter , s ) => nodeWriter . WriteAny ( s ) ) ;
998+
993999 // extensions
9941000 writer . WriteExtensions ( Extensions , OpenApiSpecVersion . OpenApi2_0 ) ;
9951001
@@ -1024,6 +1030,26 @@ private bool TrySerializeTypeProperty(IOpenApiWriter writer, OpenApiSpecVersion
10241030 return false ;
10251031 }
10261032
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+
10271053 private static bool IsPowerOfTwo ( int x )
10281054 {
10291055 return x != 0 && ( x & ( x - 1 ) ) == 0 ;
0 commit comments