.NET 4.x Как десериализовать такой JSON - C#
Формулировка задачи:
Уважаемые.
Имеется вот такой JSON:
Ключи могут меняться, добавляться или удаляться.
Вот ссылка на этот JSON https://api.exmo.com/v1/ticker/
Помогите сделать универсальное решение.
Необходимо сделать следующее:
1 - десериализовать в List.
2 - объединить, т.е. удалить основные ключи, как если бы JSON выглядел так:
3 - сюда-же добавить еще одно поле
{ "BTC_EUR" : { "avg" : "372.93547004", "buy_price" : "372", "high" : "375.41", "last_trade" : "372", "low" : "371.18", "sell_price" : "374.9", "updated" : 1459021665, "vol" : "66.21721654", "vol_curr" : "24680.68848195" }, "BTC_USD" : { "avg" : "416.6776047", "buy_price" : "414.5", "high" : "421.8999", "last_trade" : "415.73", "low" : "413.333", "sell_price" : "416", "updated" : 1459021687, "vol" : "203.60824276", "vol_curr" : "84825.19698352" } }
{ "avg" : "416.6776047", "buy_price" : "414.5", "high" : "421.8999", "last_trade" : "415.73", "low" : "413.333", "sell_price" : "416", "updated" : 1459021687, "vol" : "203.60824276", "vol_curr" : "84825.19698352" }
pair
с именем "BTC_USD" Я пытался сделать на классах, но проблема в том что основные ключи меняются постоянно, у меня ничего не получилось. А динамическую систему десериализации сделать не получилось, не осилил. Только учусь, многого не знаю.Решение задачи: «.NET 4.x Как десериализовать такой JSON»
textual
Листинг программы
using System; using System.Collections.Generic; using System.Net; using System.Text; using System.Runtime.Serialization.Json; using System.IO; namespace ConsoleCS { class Program { static void Main(string[] args) { string url = "https://api.exmo.com/v1/ticker/"; var wc = new WebClient(); var settings = new DataContractJsonSerializerSettings(); settings.UseSimpleDictionaryFormat = true; var serializer = new DataContractJsonSerializer(typeof(Dictionary<string, Dictionary<string, object>>), settings); var json = wc.DownloadString(url); Dictionary<string, Dictionary<string, object>> dict; using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json))) { dict = serializer.ReadObject(ms) as Dictionary<string, Dictionary<string, object>>; } foreach (string key in dict.Keys) Console.WriteLine("{0}: {1}",key,dict[key]["buy_price"]); Console.ReadLine(); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д