Форум программистов, компьютерный форум, киберфорум
C#: ASP.NET Core
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 09.12.2017
Сообщений: 10

Десериализация JSON

24.12.2019, 22:01. Показов 2858. Ответов 2

Студворк — интернет-сервис помощи студентам
Здравствуйте, подскажите пожалуйста как получить данные. При десериализации выдаёт ошибку ?





Метод:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
public void GetAllItems()
        {
            const string url = "https://prices.csgotrader.app/latest/prices_v3.json";
            HttpClient client = new HttpClient();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            var data = client.GetAsync(url).Result.Content.ReadAsStringAsync().Result;
            var parsed = JsonConvert.DeserializeObject<Dictionary<string, CsMoneyItems>>(data);
            foreach (var item in parsed)
            {
                db.Items.Add(new Item { Name = item.Key, Price = item.Value.csmoney});
            }
            db.SaveChanges();
        }
Модель:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 public class CsMoneyItems
    {       
        public List<Steam> steam { get; set; }
        public List<Bitskins> bitskins { get; set; }
        public double lootfarm { get; set; }
        public string csgotm { get; set; }
        public string csmoney { get; set; }
        public List<Csgotrader> csgotrader { get; set; }
    }
 
    public class Steam
    {
        public double last_90d { get; set; }
        public double last_30d { get; set; }
        public double last_7d { get; set; }
        public double last_24h { get; set; }
    }
 
    public class Bitskins
    {
        public string price { get; set; }
        public string instant_sale_price { get; set; }
    }
 
    public class Csmoney
    {
        public string price { get; set; }
    }
 
    public class Csgotrader
    {
        public double price { get; set; }
    }
Пример json:
JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
{
  "★ M9 Bayonet | Damascus Steel (Factory New)": {
    "steam": {
      "last_90d": 242.55,
      "last_30d": 235.94,
      "last_7d": 243.21,
      "last_24h": 256.08
    },
    "bitskins": {
      "price": "174.5",
      "instant_sale_price": "69.8"
    },
    "lootfarm": 319.72,
    "csgotm": "null",
    "csmoney": {
      "price": 220.83
    },
    "csgotrader": {
      "price": 242.81
    }
  },
  "StatTrak™ MAC-10 | Stalker (Factory New)": {
    "steam": {
      "last_90d": 146.67,
      "last_30d": 149.04,
      "last_7d": 177.51,
      "last_24h": 177.51
    },
    "bitskins": {
      "price": "170.11",
      "instant_sale_price": "68.04"
    },
    "lootfarm": 263.49,
    "csgotm": "null",
    "csmoney": {
      "price": 126.83
    },
    "csgotrader": {
      "price": 154.93
    }
  }
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.12.2019, 22:01
Ответы с готовыми решениями:

Сериализация и десериализация формата Json
Здравствуйте Пытаюсь разобраться как десериализовать и сериализовать из формата Json в обычную строку и обратно Создаю два класса в...

Как правильно прописать коллекцию в JSON конфигурации appsettings.json?
Всем привет. Подскажите, как в appsettings.json правильно прописать список админов? Я здесь прописал понятное дело какую-то ернуду в...

Десериализация xml файла не инициализирует поля класса
Дорброго времени суток! Надеюсь кто-нибудь поможет разобраться в проблеме. При попытке загрузить xml файл на сервер и преобразовать его в...

2
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
25.12.2019, 15:50
Цитата Сообщение от rmixs Посмотреть сообщение
При десериализации выдаёт ошибку ?
Десериализацию примера проверяли?
Может в загрузке данных проблема?
1
12 / 11 / 6
Регистрация: 07.02.2014
Сообщений: 122
10.01.2020, 19:15
Лучший ответ Сообщение было отмечено rmixs как решение

Решение

Проблема в том, что данные идут закодированные через gzip и то что ты получил еще нельзя пускать на десериализацию. Вот что нужно сделать:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.IO;
using System.IO.Compression;
using System.Net;
 
namespace ConsoleApp3
{
    class Program
    {
        static void Main(string[] args)
        {
            var data = SendRequest();
        }
 
        private static JObject SendRequest()
        {
            var jOBj = new JObject();
            try
            {
 
                try
                {
                    string urlStr = "https://prices.csgotrader.app/latest/prices_v3.json";
 
 
                    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlStr);
                    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                    Stream resStream = response.GetResponseStream();
 
                    var t = ReadFully(resStream);
                    var y = Decompress(t);
 
                    using (var ms = new MemoryStream(y))
                    using (var streamReader = new StreamReader(ms))
                    using (var jsonReader = new JsonTextReader(streamReader))
                    {
                        jOBj = (JObject)JToken.ReadFrom(jsonReader);
                    }
 
 
                }
                catch (System.Net.Sockets.SocketException)
                {
                    // The remote site is currently down. Try again next time. 
                }
 
            }
            catch (Exception ex)
            {
                throw new Exception(ex.ToString());
            }
            return jOBj;
        }
 
        public static byte[] ReadFully(Stream input)
        {
            byte[] buffer = new byte[16 * 1024];
            using (MemoryStream ms = new MemoryStream())
            {
                int read;
                while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
                {
                    ms.Write(buffer, 0, read);
                }
                return ms.ToArray();
            }
        }
 
        public static byte[] Decompress(byte[] data)
        {
            using (var compressedStream = new MemoryStream(data))
            using (var zipStream = new GZipStream(compressedStream, CompressionMode.Decompress))
            using (var resultStream = new MemoryStream())
            {
                zipStream.CopyTo(resultStream);
                return resultStream.ToArray();
            }
        }
    }
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.01.2020, 19:15
Помогаю со студенческими работами здесь

Десериализация JSON из ВК без JSON.NET
JSON: { &quot;response&quot; : } Мой код: string json = тут текст из спойлера вначале; JavaScriptSerializer jser = new...

Json десериализация
помогите десириализовать json туплю не имоверно но не понимаю как это работает вот пример входной строки { ...

Десериализация json
Здравствуйте. Есть ответ от сервера в формате json такого вида: { ...

Десериализация Json
У меня есть json файл. в котором есть набор однотипных объектов. хочу его десереализировать. Мне нужны только...

Десериализация JSON
Есть JSON строка, получаю её по http запросу public class Account { public string Name { get; set;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru