рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде Newtonsoft.Json рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ред рднрд╛рдЧ 1

рдпрджрд┐ рдЖрдк рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдкрдврд╝ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ JSON рдХреНрдпрд╛ рд╣реИ рдФрд░ рдиреАрдЪреЗ рджреА рдЧрдИ рддрд╕реНрд╡реАрд░ рдЖрдкрдХреЛ рдкрд░рд┐рдЪрд┐рдд рд╣реИред рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВ рдЖрдкрдХреЛ рдЗрд╕ рдкреГрд╖реНрда рдкрд░ рдЬрд╛рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рдирд╣реАрдВ рд╣реИрдВ, рд╕рд╛рде рд╣реА рдкрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдпрд╣ рд╕реА # рдореЗрдВ JSON рдЕрдВрдХрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рд╕реЗ рдЦреБрдж рдХреЛ рдкрд░рд┐рдЪрд┐рдд рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рд▓рд┐рдВрдХ рдкрд░ ред



рдореИрдВ рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдиреЛрдЯ рд╡рд┐рд╖рдп рдХреЗ рдкреВрд░реНрдг рдкреНрд░рдХрдЯреАрдХрд░рдг рдХрд╛ рдвреЛрдВрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдкрд╛рда рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдЙрди рд╡рд┐рдХрд╛рд╕реЛрдВ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХрд░рдирд╛ рдФрд░ рдЙрдирдХрд╛ рд╕рдВрд░рдХреНрд╖рдг рдХрд░рдирд╛ рд╣реИ, рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рдореИрдВрдиреЗ рдиреНрдпреВрдЯрдирд╕реЙрдлреНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдХрд┐рдпрд╛ рдерд╛ред рдЬреИрд╕рди рдкреБрд╕реНрддрдХрд╛рд▓рдпред

рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдмрдпрд╛рди


рд▓реЗрдЦ рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░, рдмрдбрд╝реЗ рдФрд░, рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ рдХрд┐ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдбреЗрдЯрд╛ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рд╛рдордЧреНрд░реА рдХреА рдзрд╛рд░рдгрд╛ рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рдПрдЧрд╛ред рддреЛ, рдореБрдЦреНрдп рдХрд╛рд░реНрдп EXMO рдХреНрд░рд┐рдкреНрдЯреЛрдХрд░рдВрд╕реА рдПрдкреАрдЖрдИ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реИред рд╕рд░рд▓рддрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдкрдмреНрд▓рд┐рдХ рдЗрдВрдЯрд░рдлреЗрд╕ (рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрдкреАрдЖрдИ) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХрд┐рд╕реА рд╕рд╛рдЗрдЯ рдХреЗ рдирд┐рдпрдорд┐рдд рдкреГрд╖реНрда рдкрддреЗ рдХреА рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, System.Net.Http рдирд╛рдорд╕реНрдерд╛рди рдХреЗ HttpClient рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

HttpClient httpClient = new HttpClient(); string request = "https://api.exmo.com/v1/trades/?pair=BTC_USD"; HttpResponseMessage response = (await httpClient.GetAsync(request)).EnsureSuccessStatusCode(); string responseBody = await response.Content.ReadAsStringAsync(); 

рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдкрд░рд┐рдгрд╛рдо https://api.exmo.com/v1/trades/?pair=BTC_USD рдХреЗ рд▓рд┐рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ JSON C # рдХреНрд▓рд╛рд╕ рдЬреЗрдирд░реЗрдЯрд░ рдореЗрдВ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдбрд┐рд╕реЗрд░рд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рд╡рд░реНрдЧ рд╕рдВрд░рдЪрдирд╛ рдХреА рдкреЗрд╢рдХрд╢ рдХреА рдЬрд╛рдПрдЧреА:

  public class BTCUSD { public int trade_id { get; set; } public string type { get; set; } public string quantity { get; set; } public string price { get; set; } public string amount { get; set; } public int date { get; set; } } public class RootObject { public List<BTCUSD> BTC_USD { get; set; } } 

рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреНрд░рд┐рдкреНрдЯреЛ-рдПрдХреНрд╕рдЪреЗрдВрдЬ "рдЯреНрд░реЗрдбреНрд╕" рдлрд╝рдВрдХреНрд╢рди рд╕реНрд╡рдпрдВ рдЖрдкрдХреЛ рдПрдХ рдмрд╛рд░ рдореЗрдВ рдХрдИ рдореБрджреНрд░рд╛ рдЬреЛрдбрд╝реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдФрд░ рдЕрдиреБрд░реЛрдз рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ

 string request = "https://api.exmo.com/v1/trades/?pair=BTC_USD,ETH_USD"; 

рд╡рд░реНрдЧ рд╕рдВрд░рдЪрдирд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧреА:

  public class BTCUSD { public int trade_id { get; set; } public string type { get; set; } public string quantity { get; set; } public string price { get; set; } public string amount { get; set; } public int date { get; set; } } public class ETHUSD { public int trade_id { get; set; } public string type { get; set; } public string quantity { get; set; } public string price { get; set; } public string amount { get; set; } public int date { get; set; } } public class RootObject { public List<BTCUSD> BTC_USD { get; set; } public List<ETHUSD> ETH_USD { get; set; } } 

рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЖрдк рдореБрджреНрд░рд╛ рдЬреЛрдбрд╝реЗ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрдпреЛрдЬрди рдХреЗ рд▓рд┐рдП рдХрдХреНрд╖рд╛рдПрдВ рддреИрдпрд╛рд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдХрд┐рд╕реА рддрд░рд╣ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред
рд╣реИрд░рд╛рдиреА рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ рд░реВрд╕реА рднрд╛рд╖рд╛ рдХреЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ JSON рд╕рдВрдХреЗрддрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдкрд░ рдЕрдЪреНрдЫреЗ рд▓реЗрдЦреЛрдВ рдХреЛ рдЦреЛрдЬрдирд╛ рд▓рдЧрднрдЧ рдЕрд╕рдВрднрд╡ рд╣реИред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЙрди EXMO API рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЬреЛ GitHub рдкрд░ рдкрд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрдирдореЗрдВ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ s, рдЯреНрд░рд┐рдо s рдФрд░ рдЗрд╕реА рддрд░рд╣ рдХреЗ рдореВрд▓ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рддреЛрдбрд╝ рд╣реЛрддреЗ рд╣реИрдВред

рдореБрдЭреЗ рдпрд╣ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реА рдмрд╛рд░ рдПрдХ рд╕рд╛рдЗрдХрд┐рд▓ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдпрд╛ рдФрд░ рдЕрдкрдиреЗ рджрдо рдкрд░ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ред рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдХреЛрдб рдмрд┐рд▓реНрдХреБрд▓ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рдпрд╣ рдПрдХ рдорд╣рд╛рди рдЙрджрд╛рд╣рд░рдг рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдХреИрд╕реЗ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред


 LinkedList<OrderInform> loi = new LinkedList<OrderInform>(); try { string[] json = answer.Split(new char[] { '{', '}' }); foreach (var item in json) { if (item.Length > 20) { string[] trade = item.Split(new char[] { ',' }); if (trade.Length > 5) { string t_id = trade[0].Split(new char[] { ':' })[1].Trim('"'); string t_type = trade[1].Split(new char[] { ':' })[1].Trim('"'); string t_quantity = trade[2].Split(new char[] { ':' })[1].Trim('"') .Replace(".", ","); string t_price = trade[3].Split(new char[] { ':' })[1].Trim('"') .Replace(".", ","); string t_amount = trade[4].Split(new char[] { ':' })[1].Trim('"') .Replace(".", ","); string t_date_time = trade[5].Split(new char[] { ':' })[1].Trim('"'); loi.AddLast(new OrderInform(pair, Convert.ToInt32(t_id), t_type, Convert.ToDouble(t_quantity), Convert.ToDouble(t_price), Convert.ToDouble(t_amount), (new DateTime(1970, 1, 1, 0, 0, 0, 0)) .AddSeconds(Convert.ToInt32(t_date_time)))); } } } return loi; } catch (Exception ex) { return new LinkedList<OrderInform>(); } 


JSON рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ (рдЬреЛрдмрдЬреЗрдХреНрдЯ рдХреНрд▓рд╛рд╕)


JSON рдСрдмреНрдЬреЗрдХреНрдЯ рдХреБрдВрдЬреА / рдорд╛рди рдЬреЛрдбрд╝реЗ рдХрд╛ рдПрдХ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рд╕реЗрдЯ рд╣реИред рдПрдХ рд╡рд╕реНрддреБ '{' (рдПрдХ рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реЗрд╕) рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ рдФрд░ '}' (рдПрдХ рд╕рдорд╛рдкрди рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реЗрд╕) рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддреА рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдирд╛рдо рдХреЗ рдмрд╛рдж рд╣реИ: (рдПрдХ рдмреГрд╣рджрд╛рдиреНрддреНрд░), рдХреБрдВрдЬреА / рдореВрд▓реНрдп рдЬреЛрдбрд╝реЗ рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред



JSON C # рдХреНрд▓рд╛рд╕ рдЬреЗрдирд░реЗрдЯрд░ рджреНрд╡рд╛рд░рд╛ рд╣рдореЗрдВ рдкрд╣рд▓реЗ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдВрд░рдЪрдирд╛ рд╕реЗ, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдореБрджреНрд░рд╛ рдЬреЛрдбрд╝реА рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 6 рдирд┐рд░рдВрддрд░ рдХреНрд╖реЗрддреНрд░ рд╣реИрдВред рдЙрдиреНрд╣реЗрдВ рдПрдХ рдЕрд▓рдЧ рдХрдХреНрд╖рд╛ рдореЗрдВ рд▓рдкреЗрдЯреЗрдВ рдФрд░ рдЗрд╕реЗ рдСрд░реНрдбрд░ рдХрд░реЗрдВред

  class Order { public int trade_id { get; set; } public string type { get; set; } public double quantity { get; set; } public double price { get; set; } public double amount { get; set; } public int date { get; set; } } 

рд╡рд┐рдирд┐рдордп рдХреЗ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдмрджрд▓рддреА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рд╕реЗ рдЗрди рдХреНрд╖реЗрддреНрд░реЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ "рд╣рдбрд╝рдкрдиреЗ" рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдиреНрдпреВрдЯреЛрд╕реЙрдлреНрдЯ.рдЬреЙрди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЕрдзрд┐рдХ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, newtonsoft.json.linq рдиреЗрдорд╕реНрдкреЗрд╕ рдореЗрдВред

рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
Visual Studio рдореЗрдВ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдмрд╕ NuGet рдЦреЛрдЬ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рдорд╛рдзрд╛рди рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рдореЗрдВ рд╕рдорд╛рдзрд╛рди рдкрд░ рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ "рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП NuGet рдкреИрдХреЗрдЬ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░реЗрдВ ..." рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ (рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП NuGet рдкреИрдХреЗрдЬ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░реЗрдВ ...)ред



рдЕрдЧрд▓рд╛, "рдмреНрд░рд╛рдЙрдЬрд╝ рдХрд░реЗрдВ" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдЦреЛрдЬ рдмрд╛рд░ рдореЗрдВ newtosoft.json рджрд░реНрдЬ рдХрд░реЗрдВред рд╣рдо рдЕрдкрдиреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рдордиреЗ рдПрдХ рдЯрд┐рдХ рд▓рдЧрд╛рддреЗ рд╣реИрдВ рдФрд░ "рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ" ("рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ") рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВред



рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж newtosoft.json.linq рдирд╛рдо рд╕реНрдерд╛рди, рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рдЬреБрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ:

 using Newtonsoft.Json.Linq; 

Newtosoft.json.linq рдбреЗрдЯрд╛ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдореВрд░реНрдд JToken рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ JValue (рд╕рд░рд▓ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП) рдФрд░ JContainer (рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП) рдХрдХреНрд╖рд╛рдПрдВ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рд╣реИрдВред рд╕рдВрд░рдЪрдирд╛рдПрдВ, рдмрджрд▓реЗ рдореЗрдВ, рдПрдХ JArray (рд╕рд░рдгреА), JConstructor (рдирд┐рд░реНрдорд╛рддрд╛), Jobject (рдСрдмреНрдЬреЗрдХреНрдЯ), рдпрд╛ JProperty (рд╕рдВрдкрддреНрддрд┐) рд╣реЛ рд╕рдХрддреА рд╣реИрдВред

JArray рдФрд░ JObject рдХреНрд▓рд╛рд╕реЗрд╕ рдореЗрдВ рдПрдХ Parse рдореЗрдердб рд╣реИ рдЬреЛ рдЖрдкрдХреЛ JSON рдбреЗрдЯрд╛ рдХреЛ рд░реЗрдЧреНрдпреБрд▓рд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рддреЛ, рдЕрдЧрд░ рд╣рдо Exmo рдЯреНрд░реЗрдбреЛрдВ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП JObject.Parse (рд╕реНрдЯреНрд░рд┐рдВрдЧ) рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:

 HttpClient httpClient = new HttpClient(); string request = "https://api.exmo.com/v1/trades/?pair=BTC_USD,ETH_USD"; HttpResponseMessage response = (await httpClient.GetAsync(request)).EnsureSuccessStatusCode(); string responseBody = await response.Content.ReadAsStringAsync(); JObject jObject = JObject.Parse(responseBody); 

рд╣рдо рджреЛ рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рд╕рдВрд░рдЪрдирд╛ рджреЗрдЦреЗрдВрдЧреЗ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдПрдХ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдЬреЛрдбрд╝реА рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреБрдВрдЬреА рдореБрджреНрд░рд╛ рдЬреЛрдбрд╝реА (рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рдХрд╛рд░) рдХрд╛ рдирд╛рдо рд╣реЛрдЧрд╛, рдФрд░ рдореВрд▓реНрдп рд▓реЗрдирджреЗрди рдХреА рд╕реВрдЪреА (JToken рдкреНрд░рдХрд╛рд░) рд╣реЛрдЧрд╛:



рдЕрдм, рд▓реЗрди-рджреЗрди рдХреА рд╕реВрдЪреА рд╣рдорд╛рд░реЗ рдкрд╛рд╕ "BTC_USD" рдФрд░ "USD_ETH" рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЙрдкрд▓рдмреНрдз рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореБрджреНрд░рд╛ рдЬреЛрдбрд╝реА "BTC_USD" рдкрд░ рд▓реЗрдирджреЗрди:



рдлрд┐рд░ рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕реВрдЪреА <рдЖрджреЗрд╢> ToObject <> () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП:

 HttpClient httpClient = new HttpClient(); string request = "https://api.exmo.com/v1/trades/?pair=BTC_USD,ETH_USD"; HttpResponseMessage response = (await httpClient.GetAsync(request)).EnsureSuccessStatusCode(); string responseBody = await response.Content.ReadAsStringAsync(); JObject jObject = JObject.Parse(responseBody); JToken list = jObject["BTC_USD"]; List<Order> trades = list.ToObject<List<Order>>(); 

рдпрд╛ рддреЛ рдкреВрд░реА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░реЗрдВ рд╢рдмреНрджрдХреЛрд╢ <рд╕реНрдЯреНрд░рд┐рдВрдЧ, рд╕реВрдЪреА <рдЖрджреЗрд╢ >> :

 HttpClient httpClient = new HttpClient(); string request = "https://api.exmo.com/v1/trades/?pair=BTC_USD,ETH_USD"; HttpResponseMessage response = (await httpClient.GetAsync(request)).EnsureSuccessStatusCode(); string responseBody = await response.Content.ReadAsStringAsync(); JObject jObject = JObject.Parse(responseBody); Dictionary<string, List<Order>> trades = new Dictionary<string, List<Order>>(); foreach (KeyValuePair<string, JToken> obj in jObject) trades.Add(obj.Key, obj.Value.ToObject<List<Order>>()); 

JSON Arrays (JArray рдХреНрд▓рд╛рд╕)


JSON рдПрд░реЗ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣рд┐рдд рд╕рдВрдЧреНрд░рд╣ рд╣реИред рдПрдХ рд╕рд░рдгреА '[' (рд╢реБрд░реБрдЖрддреА рд╡рд░реНрдЧ рдмреНрд░реИрдХреЗрдЯ) рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ рдФрд░ ']' (рд╕рдорд╛рдкрди рд╕реНрдХреНрд╡рд╛рдпрд░ рдмреНрд░реИрдХреЗрдЯ) рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддреА рд╣реИред рдорд╛рди рдХреЛ рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

JSON рд╕рд░рдгреА рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ, рдЗрд╕реЗ https://api.exmo.com/v1/currency рд▓рд┐рдВрдХ рдкрд░ рдЬрд╛рдХрд░ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдПрдХ рдЬреЛрдмрдЬреЗрдХреНрдЯ рдореЗрдВ рдмрджрд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдкрд┐рдЫрд▓реЗ рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдерд╛:

 HttpClient httpClient = new HttpClient(); string request = "https://api.exmo.com/v1/currency"; HttpResponseMessage response = (await httpClient.GetAsync(request)).EnsureSuccessStatusCode(); string responseBody = await response.Content.ReadAsStringAsync(); JObject jObject = JObject.Parse(responseBody); 

рд╣рдореЗрдВ рдПрдХ Newtonsoft.Json.JsonReaderException рдЕрдкрд╡рд╛рдж рдорд┐рд▓реЗрдЧрд╛ рдЬреЛ рд╣рдореЗрдВ рдмрддрд╛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рдбреЗрдЯрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдирд╣реАрдВ рд╣реИред



Arrays рдХреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ JArray рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдЬреЛрдмрдЬреЗрдХреНрдЯ рдХреА рддрд░рд╣, JContainer рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ред

 HttpClient httpClient = new HttpClient(); string request = "https://api.exmo.com/v1/currency"; HttpResponseMessage response = (await httpClient.GetAsync(request)).EnsureSuccessStatusCode(); string responseBody = await response.Content.ReadAsStringAsync(); JObject jObject = JObject.Parse(responseBody); JArray jArray = JArray.Parse(responseBody); 

рдорд╛рдорд▓реЗ рдореЗрдВ рдЬрдм рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рдВрд░рдЪрдирд╛ рдкрд╣рд▓реЗ рд╕реЗ рдЬреНрдЮрд╛рдд рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдпрд╛ рджреЛрдиреЛрдВ рдкреНрд░рдХрд╛рд░ рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ - рдЖрдк JContainer рдпрд╛ JToken рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдлрд┐рд░ рдбреЗрдЯрд╛ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рджреМрд░рд╛рди рд╡рд╛рдВрдЫрд┐рдд рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

 HttpClient httpClient = new HttpClient(); string request = "https://api.exmo.com/v1/currency"; HttpResponseMessage response = (await httpClient.GetAsync(request)).EnsureSuccessStatusCode(); string responseBody = await response.Content.ReadAsStringAsync(); JToken jArray = JToken.Parse(responseBody ); //    JArray List<string> list = jArray.ToObject<List<string>>(); request = "https://api.exmo.com/v1/trades/?pair=BTC_USD,ETH_USD"; HttpResponseMessage response = (await httpClient.GetAsync(request)).EnsureSuccessStatusCode(); string responseBody = await response.Content.ReadAsStringAsync(); JToken jObject = JToken.Parse(responseBody ); //    JObject Dictionary<string, List<Order>> dict = jObject.ToObject<Dictionary<string, List<Order>>>(); 

JSON рдорд╛рди (JValue Class)


JSON рдкреНрд░рд╛рд░реВрдк рд╡рд┐рд╡рд░рдг рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдорд╛рди рдПрдХ рдбрдмрд▓-рдЙрджреНрдзреГрдд рд╕реНрдЯреНрд░рд┐рдВрдЧ, рд╕рдВрдЦреНрдпрд╛, рд╕рддреНрдп, рдЕрд╕рддреНрдп, рдЕрд╢рдХреНрдд, рдПрдХ рд╡рд╕реНрддреБ рдпрд╛ рдПрдХ рд╕рд░рдгреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ ред рдЗрди рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рдирд╕реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред Newotnsoft.json рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рдХреЗрд╡рд▓ рд╕рд╛рдзрд╛рд░рдг рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдореВрд▓реНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИред JArray рдХреЛ JValue рдореЗрдВ рдмрджрд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдкрд░ рдкрд░рд┐рдгрд╛рдо "System.InvalidCastException" рдЕрдкрд╡рд╛рдж рдХреЗ рд░реВрдк рдореЗрдВ рдорд┐рд▓реЗрдЧрд╛ред

Newtonsoft.json рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореВрд▓реНрдпреЛрдВ (JValue рд╡рд░реНрдЧ) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдкрд░ рдПрдХ рдкрд░рд┐рдЪрдпрд╛рддреНрдордХ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд░реВрдк рдореЗрдВ, рдПрдХ рдмрд╛рд░ рдФрд░ рджреЛ рдмрд╛рд░ рдкреНрд░рд▓реЗрдЦрди рд╕реЗ рдЙрджрд╛рд╣рд░рдг рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓ рд╣реИрдВред

рдПрдХреНрд╕рдЪреЗрдВрдЬ рд╕реЗ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдЙрджрд╛рд╣рд░рдг:

 HttpClient httpClient = new HttpClient(); string request = "https://api.exmo.com/v1/currency"; HttpResponseMessage response = (await httpClient.GetAsync(request)).EnsureSuccessStatusCode(); string responseBody = await response.Content.ReadAsStringAsync(); JArray jArray = JArray.Parse(responseBody ); foreach (JValue value in jArray) { string s = (string)value; } 

рд▓реЗрдЦ рдХреЗ рджреВрд╕рд░реЗ рднрд╛рдЧ рдореЗрдВ, рдореИрдВ рдбреЗрдЯрд╛ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд░реНрдЧ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛, рд╕рд╛рде рд╣реА рдбреЗрдЯрдЯрд╛рдЗрдо рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВред

рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдкреВрд░рд╛ рдкрд╛рдаред
 using System.Threading.Tasks; using System.Collections.Generic; using System.Net.Http; using Newtonsoft.Json.Linq; namespace JSONObjects { class Order { public int trade_id { get; set; } public string type { get; set; } public double quantity { get; set; } public double price { get; set; } public double amount { get; set; } public int date { get; set; } } class Program { public static async Task Main(string[] args) { HttpClient httpClient = new HttpClient(); string request = "https://api.exmo.com/v1/currency"; HttpResponseMessage response = (await httpClient.GetAsync(request)).EnsureSuccessStatusCode(); string responseBody = await response.Content.ReadAsStringAsync(); JToken jArray = JToken.Parse(responseBody); //    JArray List<string> list = jArray.ToObject<List<string>>(); request = "https://api.exmo.com/v1/trades/?pair=BTC_USD,ETH_USD"; response = (await httpClient.GetAsync(request)).EnsureSuccessStatusCode(); responseBody = await response.Content.ReadAsStringAsync(); JToken jObject = JToken.Parse(responseBody); //    JObject Dictionary<string, List<Order>> dict = jObject.ToObject<Dictionary<string, List<Order>>>(); } } } 


рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдмрд╕реЗ рдкреВрд░реНрдг рдФрд░ рд╡рд┐рд╕реНрддреГрдд рдЬрд╛рдирдХрд╛рд░реА рд╣рдореЗрд╢рд╛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИред

Source: https://habr.com/ru/post/hi481514/


All Articles