.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();
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д