Skip to content

Commit 77994ee

Browse files
committed
✨ Keep IsRequiredSpecified() but use JsonProperty.Required internally
Newtonsoft do all the work for us, handling [JsonProperty(Required = Required.Always)] or [JsonRequired] or [DataMember(IsRequired = true)] and filling the JsonProperty.Required field.
1 parent 5ec8ff2 commit 77994ee

File tree

3 files changed

+9
-4
lines changed

3 files changed

+9
-4
lines changed

src/Swashbuckle.AspNetCore.Newtonsoft/SchemaGenerator/JsonPropertyExtensions.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,10 @@ public static bool TryGetMemberInfo(this JsonProperty jsonProperty, out MemberIn
1414

1515
return (memberInfo != null);
1616
}
17+
18+
public static bool IsRequiredSpecified(this JsonProperty jsonProperty)
19+
{
20+
return jsonProperty.Required != Required.Default;
21+
}
1722
}
1823
}

src/Swashbuckle.AspNetCore.Newtonsoft/SchemaGenerator/NewtonsoftDataContractResolver.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ private List<DataProperty> GetDataPropertiesFor(JsonObjectContract jsonObjectCon
152152
{
153153
if (jsonProperty.Ignored) continue;
154154

155-
var required = jsonProperty.Required != Required.Default
155+
var required = jsonProperty.IsRequiredSpecified()
156156
? jsonProperty.Required
157157
: jsonObjectContract.ItemRequired ?? Required.Default;
158158

test/Swashbuckle.AspNetCore.Newtonsoft.Test/Fixtures/JsonPropertyAnnotatedType.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,12 @@ public class JsonPropertyAnnotatedType
2424
[JsonProperty(Required = Required.AllowNull)]
2525
public string StringWithRequiredAllowNull { get; set; }
2626

27-
[DataMember(IsRequired = false)] //As the support for DataMember has been implemented later, JsonRequired should take precedence
27+
[DataMember(IsRequired = false)] //As the support for DataMember has been implemented later, JsonProperty.Required should take precedence
2828
[JsonProperty(Required = Required.Always)]
2929
public string StringWithRequiredAlwaysButConflictingDataMember { get; set; }
3030

31-
[DataMember(IsRequired = true)] //As the support for DataMember has been implemented later, JsonRequired should take precedence
31+
[DataMember(IsRequired = true)] //As the support for DataMember has been implemented later, JsonProperty.Required should take precedence
3232
[JsonProperty(Required = Required.Default)]
3333
public string StringWithRequiredDefaultButConflictingDataMember { get; set; }
3434
}
35-
}
35+
}

0 commit comments

Comments
 (0)