У меня есть следующие данные:
В отличие от аналогичного вопроса здесь: Utf8 Json десериализация для ввода на основе поля маркера веб-служба не возвращает поле маркера (в ниже случай primaryExch
) в качестве первого элемента.
По сути, я хотел бы utf8 json декодировать данные в следующее:
[
{
"ticker": "AAPL",
"name": "Apple Inc.",
"market": "STOCKS",
"locale": "US",
"currency": "USD",
"active": true,
"primaryExch": "NGS",
"type": "cs",
"codes": {
"cik": "0000320193",
"figiuid": "EQ0010169500001000",
"scfigi": "BBG001S5N8V8",
"cfigi": "BBG000B9XRY4",
"figi": "BBG000B9Y5X2"
},
"updated": "2019-01-15T05:21:28.437Z",
"url": "https://api.polygon.io/v2/reference/tickers/AAPL"
},
{
"ticker": "$AEDAUD",
"name": "United Arab Emirates dirham - Australian dollar",
"market": "FX",
"locale": "G",
"currency": "AUD",
"active": true,
"primaryExch": "FX",
"updated": "2019-01-25T00:00:00.000Z",
"attrs": {
"currencyName": "Australian dollar,",
"currency": "AUD,",
"baseName": "United Arab Emirates dirham,",
"base": "AED"
},
"url": "https://api.polygon.io/v2/tickers/$AEDAUD"
},
{ /* another stock */ },
{ /* another stock */ },
{ /* another FX*/ },
{ /* another stock */ },
{ /* another FX*/ }
/* and so forth */
]
Свойство URL-адреса базового типа hte и currencyName и baseName типа FX можно пропустить, поскольку они не требуются.
В следующий результат:
class Response
{
List<Stocks> Stocks{ get; set; }
List<ForeignExchange> ForeignExchange { get; set; }
}
Я бы тоже согласился со списком базовых типов List<Ticker>
возвращается:
class Ticker {string Ticker {get; set;} строка Имя {получить; установить;} MarketEnum Market {получить; set;} LocaleEnum Locale {получить; set;} CurrencyEnum Currency {получить; set;} bool Active {получить; set;} PrimaryExchEnum PrimaryExch {получить; set;} DateTimeOffset Обновлено {get; set;}}
class Stock : Ticker
{
int Type {get; set;}
string CIK {get; set;}
string FIGIUID {get; set;}
string SCFIGI {get; set;}
string CFIGI {get; set;}
string FIGI {get; set;}
}
class ForeignExchange : Ticker
{
BaseCurrencyEnum BaseCurrency {get; set;}
}
Я вижу, как это делается в JSON. net согласно . NET Десериализация JSON на несколько типов , но после utf8 json для скорости, но в идеале без стеков низкоуровневого кода десериализации.
Согласно моей исходной ссылке, Utf8 Json десериализовать на тип на основе поля маркера Я не могу используйте поле маркера, поскольку оно не является первым, и вы не знаете, как эффективно справиться с этим сценарием. .
Также я не уверен, как сгладить массивы codes
и attr
.
Любые указатели очень ценятся.