.NET 4.x Как десериализовать такой JSON - C#

Узнай цену своей работы

Формулировка задачи:

Уважаемые. Имеется вот такой JSON:
Листинг программы
  1. { "BTC_EUR" : { "avg" : "372.93547004",
  2. "buy_price" : "372",
  3. "high" : "375.41",
  4. "last_trade" : "372",
  5. "low" : "371.18",
  6. "sell_price" : "374.9",
  7. "updated" : 1459021665,
  8. "vol" : "66.21721654",
  9. "vol_curr" : "24680.68848195"
  10. },
  11. "BTC_USD" : { "avg" : "416.6776047",
  12. "buy_price" : "414.5",
  13. "high" : "421.8999",
  14. "last_trade" : "415.73",
  15. "low" : "413.333",
  16. "sell_price" : "416",
  17. "updated" : 1459021687,
  18. "vol" : "203.60824276",
  19. "vol_curr" : "84825.19698352"
  20. }
  21. }
Ключи могут меняться, добавляться или удаляться. Вот ссылка на этот JSON https://api.exmo.com/v1/ticker/ Помогите сделать универсальное решение. Необходимо сделать следующее: 1 - десериализовать в List. 2 - объединить, т.е. удалить основные ключи, как если бы JSON выглядел так:
Листинг программы
  1. { "avg" : "416.6776047",
  2. "buy_price" : "414.5",
  3. "high" : "421.8999",
  4. "last_trade" : "415.73",
  5. "low" : "413.333",
  6. "sell_price" : "416",
  7. "updated" : 1459021687,
  8. "vol" : "203.60824276",
  9. "vol_curr" : "84825.19698352"
  10. }
3 - сюда-же добавить еще одно поле

pair

с именем "BTC_USD" Я пытался сделать на классах, но проблема в том что основные ключи меняются постоянно, у меня ничего не получилось. А динамическую систему десериализации сделать не получилось, не осилил. Только учусь, многого не знаю.

Решение задачи: «.NET 4.x Как десериализовать такой JSON»

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Net;
  4. using System.Text;
  5. using System.Runtime.Serialization.Json;
  6. using System.IO;
  7.  
  8. namespace ConsoleCS
  9. {
  10.     class Program
  11.     {
  12.         static void Main(string[] args)
  13.         {
  14.             string url = "https://api.exmo.com/v1/ticker/";
  15.             var wc = new WebClient();
  16.             var settings = new DataContractJsonSerializerSettings();
  17.             settings.UseSimpleDictionaryFormat = true;
  18.             var serializer = new DataContractJsonSerializer(typeof(Dictionary<string, Dictionary<string, object>>), settings);
  19.             var json = wc.DownloadString(url);
  20.             Dictionary<string, Dictionary<string, object>> dict;
  21.             using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json)))
  22.             {
  23.                 dict = serializer.ReadObject(ms) as Dictionary<string, Dictionary<string, object>>;
  24.             }
  25.             foreach (string key in dict.Keys)
  26.                 Console.WriteLine("{0}: {1}",key,dict[key]["buy_price"]);
  27.             Console.ReadLine();
  28.         }
  29.     }
  30. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы