JsonPropertyNameAttribute is not supported record from C#9?

Viewed 1428

I want to use record with JsonPropertyName attribute, but it caused an error. This is not supported? Any workaround?

public record QuoteResponse([JsonPropertyName("quotes")] IReadOnlyCollection<Quote>? Quotes);

Error CS0592 Attribute 'JsonPropertyName' is not valid on this declaration type. It is only valid on 'property, indexer, field' declarations.

enter image description here

2 Answers

By default attributes on record parameters apply to the parameter. To make them apply to the property you have to prefix it with the property: attribute location:

public record QuoteResponse([property: JsonPropertyName("quotes")] IReadOnlyCollection<Quote>? Quotes);

There are 2 ways (that I know of) to create a record, the below will hopefully solve it for you.

public record QuoteResponse
{
    [JsonPropertyName("quotes")]
    public IReadOnlyCollection<Quote>? Quotes {get; init;}
}
Related