C# Регистро чувствительный JsonProperty
У меня от сервера приходит следующая структура:
{
"a": 2612272441,
"p": "27556.67000000",
"q": "0.00173000",
"f": 3091609090,
"l": 3091609090,
"T": 1682261520001,
"m": false,
"M": true
}
В ней возвращается 2 поля (m и M) - отличие лишь в регистре.
Мне нужно десериализовать этот json в следующий объект:
public readonly record struct AggregatedTradeInfoResponse
{
/// <summary>
/// Идентификатор.
/// </summary>
[JsonProperty("a")]
public ulong Id { get; init; }
/// <summary>
/// First tradeId.
/// </summary>
[JsonProperty("f")]
public ulong FirstId { get; init; }
/// <summary>
/// Last tradeId.
/// </summary>
[JsonProperty("l")]
public ulong LastId { get; init; }
/// <summary>
/// Цена.
/// </summary>
[JsonProperty("p")]
public decimal Price { get; init; }
/// <summary>
/// Количество.
/// </summary>
[JsonProperty("q")]
public decimal Qty { get; init; }
/// <summary>
/// Время сделки.
/// </summary>
[JsonProperty("T")]
public DateTimeOffset Time { get; init; }
/// <summary>
/// Является ли покупатель создателем.
/// </summary>
[JsonProperty("m")]
public bool IsBuyerMaker { get; init; }
/// <summary>
/// Является лучшим совпадением.
/// </summary>
[JsonProperty("M")]
public bool IsBestMatch { get; init; }
}
Однако при десиарелизации (используется Newtonsoft) возникает ошибка так как библиотека считает M и m одинаковыми параметрами. КАк с помощью аттрибутов сказать что требуется CaseSensitive вусуриализация?
Текст ошибки : A member with the name 'm' already exists on 'AT.Connectors.Binance.Models.Spot.MarketData.AggregatedTradeInfoResponse'. Use the JsonPropertyAttribute to specify another name.
Настройки Json сериализатора:
var settings = new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore,
DateTimeZoneHandling = DateTimeZoneHandling.Utc,
ContractResolver = new CamelCasePropertyNamesContractResolver(),
Converters =
{
new StringEnumConverter(new SnakeCaseNamingStrategy()),
new StringEnumConverter(new KebabCaseNamingStrategy()),
new StringEnumConverter(),
new DateTimeOffsetConverter()
},
};
Источник: Stack Overflow на русском