Как десериализовать массив JSON в типобезопасный экземпляр класса С# ⇐ C#

Место общения программистов C#
Anonymous
Как десериализовать массив JSON в типобезопасный экземпляр класса С#

Сообщение Anonymous »

Этот вопрос почти идентичен приведенному здесь
Я пытался перевести ответ на C#, но я не эксперт в JSON и немного растерялся.
Я пытаюсь десериализовать этот ответ JSON из конечной точки Kraken OHLC. Пример ответа, нажмите здесь
Запрос возвращает этот JSON:

Код: Выделить всё

{
"error":[],

"result":
{
"XXBTZEUR":
[
[1679269500,"26401.1","26401.1","26211.6","26243.9","26307.1","8.92959425",311],
[1679270400,"26253.1","26324.7","26060.2","26242.9","26212.0","33.15872129",520],
[1679271300,"26250.1","26276.8","26216.8","26260.4","26259.0","3.63710383",183]
],

"last":1679915700

}}
Это действительный JSON, но я не могу понять, как обрабатывать «последнее» поле, которое, кажется, выбрасывает все.
Я думал, что был близок к этим структурам классов, но, несмотря ни на что, мой внутренний массив возвращает значение null:

Код: Выделить всё

public class OHLCResponse
{
[JsonProperty(PropertyName = "error")]
public List Error;

[JsonProperty("result")]
public OHLC Result { get; set; }
}

public class OHLC
{
//[JsonProperty("ohlc_pairs")]
public Dictionary OHLCPairs { get; set; }

[JsonProperty("last")]
public int Last { get; set; }
}

public class OHLCPair
{
[JsonProperty("time")]
public int UnixDateStamp { get; set; }
[JsonProperty("open")]
public string Open { get; set; }
[JsonProperty("high")]
public string High { get; set; }
[JsonProperty("low")]
public string Low { get; set; }
[JsonProperty("close")]
public string Close { get; set; }
[JsonProperty("vwap")]                  //volume weighted average price
public string VWAP { get; set; }
[JsonProperty("volume")]
public string Volume { get; set; }
[JsonProperty("count")]
public string Count { get; set; }
}
И я просто называю это стандартной библиотекой, которая успешно обрабатывает большинство других объектов в типобезопасных классах в своем API:

Код: Выделить всё

OHLCResponse cOHLCResponse = _CKraken.GetPublicWebResponse("OHLC", param);
... который реализует:

Код: Выделить всё

result = (T)JsonConvert.DeserializeObject(json);
Результат, как бы я ни пытался изменить свой тип Классов, всегда остается пустым массивом, потому что я думаю, что он просто не может обработать «последнее» поле:
Изображение

Может кто-нибудь указать мне правильное направление? К сожалению, мне не удалось перевести пользовательский десериализатор из предыдущего вопроса. Заранее большое спасибо, Дэйв.

Подробнее здесь: https://stackoverflow.com/questions/758 ... s-instance

Вернуться в «C#»