2
2
// Licensed under the MIT license.
3
3
4
4
using System . Collections . Generic ;
5
+ using System . Linq ;
5
6
using Microsoft . OpenApi . Any ;
6
7
using Microsoft . OpenApi . Interfaces ;
7
8
using Microsoft . OpenApi . Writers ;
@@ -76,7 +77,7 @@ public void SerializeAsV3(IOpenApiWriter writer)
76
77
writer . WriteOptionalObject ( OpenApiConstants . Example , Example , ( w , e ) => w . WriteAny ( e ) ) ;
77
78
78
79
// examples
79
- writer . WriteOptionalMap ( OpenApiConstants . Examples , Examples , ( w , e ) => e . SerializeAsV3 ( w ) ) ;
80
+ SerializeExamples ( writer , Examples ) ;
80
81
81
82
// encoding
82
83
writer . WriteOptionalMap ( OpenApiConstants . Encoding , Encoding , ( w , e ) => e . SerializeAsV3 ( w ) ) ;
@@ -94,5 +95,36 @@ public void SerializeAsV2(IOpenApiWriter writer)
94
95
{
95
96
// Media type does not exist in V2.
96
97
}
98
+
99
+ private void SerializeExamples ( IOpenApiWriter writer , IDictionary < string , OpenApiExample > examples )
100
+ {
101
+ /* Special case for writing out empty arrays as valid response examples
102
+ * Check if there is any example with an empty array as its value
103
+ * */
104
+ var hasEmptyArray = examples . Values . Any ( example =>
105
+ example . Value is OpenApiArray arr && arr . Count == 0
106
+ ) ;
107
+
108
+ if ( hasEmptyArray )
109
+ {
110
+ writer . WritePropertyName ( OpenApiConstants . Examples ) ;
111
+ writer . WriteStartObject ( ) ;
112
+ foreach ( var kvp in examples )
113
+ {
114
+ if ( kvp . Value . Value is OpenApiArray arr && arr . Count == 0 )
115
+ {
116
+ writer . WritePropertyName ( kvp . Key ) ;
117
+ writer . WriteStartObject ( ) ;
118
+ writer . WriteRequiredObject ( OpenApiConstants . Value , kvp . Value . Value , ( w , v ) => w . WriteAny ( v ) ) ;
119
+ writer . WriteEndObject ( ) ;
120
+ }
121
+ }
122
+ writer . WriteEndObject ( ) ;
123
+ }
124
+ else
125
+ {
126
+ writer . WriteOptionalMap ( OpenApiConstants . Examples , examples , ( w , e ) => e . SerializeAsV3 ( w ) ) ;
127
+ }
128
+ }
97
129
}
98
130
}
0 commit comments