Прощу подсказать по возможности, как распарсить строку вида:
{"server_time":1520605826,"pairs":{"ltc_btc":{"decimal_places":8,"min_price":0.00000001,"max_price":10000,"min_amount":0.0001,"min_total":0.0001,"hidden":0,"fee":0.2,"fee_buyer":0.2,"fee_seller":0.2},"nmc_btc":{"decimal_places":8,"min_price":0.00000001,"max_price":10000,"min_amount":0.0001,"min_total":0.0001,"hidden":0,"fee":0.2,"fee_buyer":0.2,"fee_seller":0.2},"ppc_btc":{"decimal_places":8,"min_price":0.00000001,"max_price":10000,"min_amount":0.0001,"min_total":0.0001,"hidden":0,"fee":0.2,"fee_buyer":0.2,"fee_seller":0.2},"dash_btc":{"decimal_places":8,"min_price":0.00000001,"max_price":10000,"min_amount":0.0001,"min_total":0.0001,"hidden":0,"fee":0.2,"fee_buyer":0.2,"fee_seller":0.2},"doge_btc":{"decimal_places":8,"min_price":0.00000001,"max_price":10000,"min_amount":0.0001,"min_total":0.0001,"hidden":0,"fee":0.2,"fee_buyer":0.2,"fee_seller":0.2},"cam_btc":{"decimal_places":8,"min_price":0.00000001,"max_price":10000,"min_amount":0.0001,"min_total":0.0001,"hidden":0,"fee":0.2,"fee_buyer":0.2,"fee_seller":0.2},"cann_btc":{"decimal_places":8,"min_price":0.00000001,"max_price":10000,"min_amount":0.0001,"min_total":0.0001,"hidden":0,"fee":0.2,"fee_buyer":0.2,"fee_seller":0.2},"uro_btc":{"decimal_places":8,"min_price":0.00000001,"max_price":10000,"min_amount":0.0001,"min_total":0.0001,"hidden":0,"fee":0.2,"fee_buyer":0.2,"fee_seller":0.2},"opal_btc":{"decimal_places":8,"min_price":0.00000001,"max_price":10000,"min_amount":0.0001,"min_total":0.0001,"hidden":0,"fee":0.2,"fee_buyer":0.2,"fee_seller":0.2},"via_btc":{"decimal_places":8,"min_price":0.00000001,"max_price":10000,"min_amount":0.0001,"min_total":0.0001,"hidden":0,"fee":0.2,"fee_buyer":0.2,"fee_seller":0.2},"sdc_btc":{"decimal_places":8,"min_price":0.00000001,"max_price":10000,"min_amount":0.0001,"min_total":0.0001,"hidden":0,"fee":0.2,"fee_buyer":0.2,"fee_seller":0.2},"start_btc":{"decimal_places":8,"min_price":0.00000001,"max_price":10000,"min_amount":0.0001,"min_total":0.0001,"hidden":0,"fee":0.2,"fee_buyer":0.2,"fee_seller":0.2},"gsx_btc":{"decimal_places":8,"min_price":0.00000001,"max_price":10000,"min_amount":0.0001,"min_total":0.0001,"hidden":0,"fee":0.2,"fee_buyer":0.2,"fee_seller":0.2},"vtc_btc":{"decimal_places":8,"min_price":0.00000001,"max_price":10000,"min_amount":0.0001,"min_total":0.0001,"hidden":0,"fee":0.2,"fee_buyer":0.2,"fee_seller":0.2},"smbr_btc":{"decimal_places":8,"min_price":0.00000001,"max_price":10000,"min_amount":0.0001,"min_total":0.0001,"hidden":0,"fee":0.2,"fee_buyer":0.2,"fee_seller":0.2},"etco_btc":
...//
{"decimal_places":8,"min_price":0.00000001,"max_price":10000,"min_amount":0.0001,"min_total":0.0001,"hidden":0,"fee":0.2,"fee_buyer":0.2,"fee_seller":0.2}}}
server_time
вопросов нет.
Но вот ltc_btc, nmc_btc
и т.д. жутко неохота прописывать в классе, так как их повторюсь очень много. Возможно ли как то распарсить на массивы и желательно, что бы ltc_btc, nmc_btc
и т.д. переписывались в string
к остальным параметрам:
"decimal_places":8,"min_price":0.00000001,"max_price":10000,"min_amount":0.0001,"min_total":0.0001,"hidden":0,"fee":0.2,"fee_buyer":0.2,"fee_seller":0.2
Хоть вам и лень все это искать (а на эту тему на самом стаке ооочень много ответов), помогу вам все же...
Для начала, очень советую данный ресурс: тык. Также я буду в ответе использовать Json.net библиотеку.
Взглянем на структуру вашего JSON:
Мы видим, что в корне у нас есть некий long
объект server_time
и дальше идет некая коллекция pairs
. В коллекции pairs
мы видим неизвестное (динамичное) для нас имя некой подгруппы ltc_btc
, внутри этой группы есть другие, интересующие нас объекты. Так, вроде бы разобрались, давайте создадим необходимую структуру данных и попробуем десериализовать JSON:
Создадим для начала простое, нашу категорию pairs
:
public class Pair
{
[JsonProperty("decimal_places")]
public long DecimalPlaces { get; set; }
[JsonProperty("min_price")]
public double MinPrice { get; set; }
[JsonProperty("max_price")]
public long MaxPrice { get; set; }
[JsonProperty("min_amount")]
public double MinAmount { get; set; }
[JsonProperty("min_total")]
public double MinTotal { get; set; }
[JsonProperty("hidden")]
public long Hidden { get; set; }
[JsonProperty("fee")]
public double Fee { get; set; }
[JsonProperty("fee_buyer")]
public double FeeBuyer { get; set; }
[JsonProperty("fee_seller")]
public double FeeSeller { get; set; }
}
Здесь все просто, название класса Pair
- ибо наша коллекция будет Pairs
(множественное), один объект Pair
. Далее каждое значение приведено к своему типу (long, double и др.), задавайте сразу верное значение!. Также можно заметить, что у каждого значения есть некий флаг JsonProperty
, который указывает оригинальное имя объекта! Ведь не правильно в C# языке назвать переменную fee_seller
, да и не красиво это. Ок, часть работы сделана.
Следующим шагом будет создание еще одного класса, который будет содержать в себе server_time
и нашу коллекцию pairs
, раз это корневой класс, давайте так и назовем его:
public class RootObject
{
[JsonProperty("server_time")]
public long ServerTime { get; set; }
[JsonProperty("pairs")]
public Dictionary<string, Pair> Pairs { get; set; }
}
Здесь вроде все понятно, имена (как и в классе Pair
), пометки и все остальное. Интересное тут заключается в коллекции Pairs
, как можно видеть, это словарь (Dictionary). При десериализации, под каждый ltc_btc
, nmc_btc
, opal_btc
... мы получим своварь, который в ключе (key) будет хранить название нужного раздела (opal_btc
к примеру), а в значение (value) будут "внутренности", в виде класса Pair
.
Ну чтож, раз структура у нас есть, осталось сделать десериализацию:
var json = JsonConvert.DeserializeObject<RootObject>(jstring);
Ну тут прям совсем просто, мы в JSON
(которой будет задан тип RootObject) десериализуем данные из полученной заранее string jstring
переменной.
Все, теперь можно вывести необходимые данные:
Мы можем к примеру сделать поиск по ключу:
var data = json.Pairs.FirstOrDefault(x => x.Key == "ltc_btc");
Console.WriteLine($"Key: {data.Key} {data.Value.MaxPrice}");
А можем вывести все объекты сразу с помощью цикла:
foreach (var pair in json.Pairs)
{
Console.WriteLine($"{pair.Key}, {pair.Value.MaxPrice}");
}
Ну, надеюсь я вам помог. В дальнейшем, прошу вас не лениться и хотя бы немного попробуйте поискать информацию! Удачи!
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Вот такое выбивает при попытке подключить к проектуНичего не нашел в интернете! Что делать?
Передаю данные из первой формы во вторую Выдает ошибку: Ссылка на объект не указывает на экземпляр объекта
Пытаюсь отправить документ с кириллическими символами в названии через телеграм-бот:
Короче, суть в чем, я создаю кнопки на динамической форме и хочу чтобы у каждой кнопки было све нажатие или что-нибудь такое, по которому я смогу...