Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/64: Рейтинг темы: голосов - 64, средняя оценка - 4.81
29 / 1 / 0
Регистрация: 25.02.2020
Сообщений: 82

Считать данные из файла JSON в коллекцию объектов Currency.

23.07.2021, 11:11. Показов 12544. Ответов 5

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Есть 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
{ "Valute": {
        "AUD": {
            "ID": "R01010",
            "NumCode": "036",
            "CharCode": "AUD",
            "Nominal": 1,
            "Name": "Австралийский доллар",
            "Value": 54.4407,
            "Previous": 54.5796
        },
        "AZN": {
            "ID": "R01020A",
            "NumCode": "944",
            "CharCode": "AZN",
            "Nominal": 1,
            "Name": "Азербайджанский манат",
            "Value": 43.8462,
            "Previous": 43.844
        },
        "GBP": {
            "ID": "R01035",
            "NumCode": "826",
            "CharCode": "GBP",
            "Nominal": 1,
            "Name": "Фунт стерлингов Соединенного королевства",
            "Value": 101.4618,
            "Previous": 101.8143
        }
    }
}
Есть у меня класс Currency
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
namespace ConsoleApp1.Modals
{
    public class Currency
    {
            public string ID { get; set; }
            public string NumCode { get; set; }
            public string CharCode { get; set; }
            public int Nominal { get; set; }
            public string Name { get; set; }
            public float Value { get; set; }
            public float Previous { get; set; }
    }
}
C#
1
2
3
4
5
            Dictionary<int,Currency> cur = new Dictionary<int,Currency>();
            var path = "Json.txt";
            string json = File.ReadAllText(path);
            Modals.Currency currency = Newtonsoft.Json.JsonConvert.DeserializeObject<Modals.Currency>(json);//считал JSON в строку
            //string jsonOut = Newtonsoft.Json.JsonConvert.SerializeObject(currency);
мне нужно считать данные из файла JSON в коллекцию объектов Currency.
Подскажите, как это сделать?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.07.2021, 11:11
Ответы с готовыми решениями:

Необходимо считать данные из текстового файла в коллекцию для последующей их сортировке в классе
Доброго времени суток уважаемые форумчане. У меня есть класс &quot;Библиотека&quot;, в котором есть список книг, по которому надо реализовать поиск...

Считать данные в коллекцию структур из текстового файла. Выполнить сортировку коллекции с использованием Linq-запросов
Создать проект Windows Form. Описать структуру согласно заданию. Считать данные в коллекцию структур из текстового файла(не менее 15...

Как считать данные из файла json?
Как считать данные из файла json следующего содержания? ,&quot;dps&quot;:,,,,,,,,,,,...] Чтоб получить: data = ,,,,,,,,,,,...]

5
 Аватар для esperanto_qun
1124 / 656 / 393
Регистрация: 28.01.2021
Сообщений: 1,336
23.07.2021, 11:16
Лучший ответ Сообщение было отмечено m054 как решение

Решение

Пример записи и чтения файла JSON из и в объект класса.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
static async Task Main(string[] args)
        {
            // сохранение данных
            using (FileStream fs = new FileStream("user.json", FileMode.OpenOrCreate))
            {
                Person tom = new Person() { Name = "Tom", Age = 35 };
                await JsonSerializer.SerializeAsync<Person>(fs, tom);
                Console.WriteLine("Data has been saved to file");
            }
 
            // чтение данных
            using (FileStream fs = new FileStream("user.json", FileMode.OpenOrCreate))
            {
                Person restoredPerson = await JsonSerializer.DeserializeAsync<Person>(fs);
                Console.WriteLine($"Name: {restoredPerson.Name}  Age: {restoredPerson.Age}");
            }
            Console.ReadLine();
        }
Сериализация коллекции объектов

Для данной сериализации, необходима библиотека - using Newtonsoft.Json;

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
class Person
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public Person(string Name, int Age)
        {
            this.Name = Name;
            this.Age = Age;
        }
    }
    class Program
    {
        static void Main()
        {
            List<Person> people = new List<Person>()
            {
                new Person("Tom", 29),
                new Person("Bill", 25)
            };
            var serializer = new JsonSerializer();
            using (StreamWriter fs = new StreamWriter("user.json"))
            {
                using (var jsonTextWriter = new JsonTextWriter(fs))
                {
                    serializer.Serialize(fs, people);
                }
            }
        }
    }
Десериализация коллекции объектов

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public Person(string Name, int Age)
        {
            this.Name = Name;
            this.Age = Age;
        }
    }
    class Program
    {
        static void Main()
        {
            List<Person> people;
 
            using (StreamReader file = File.OpenText(@"user.json"))
            {
                JsonSerializer serializer = new JsonSerializer();
                people = (List<Person>)serializer.Deserialize(file, typeof(List<Person>));
            }
        }
    }
1
29 / 1 / 0
Регистрация: 25.02.2020
Сообщений: 82
23.07.2021, 12:13  [ТС]
Спасибо за ответ!
В вышеописанном примере Вы инициализируете объекты в коде.
Возможна ли инициализация моей коллекции данными из самого файла, либо, раз я считал все в строку, все-таки придется работать со строкой?
Ведь у меня уже готовые объекты с данными есть в JSON файле, и мне нужно их считать в мою коллекцию объектов (поля объектов в коде и JSON файле абсолютно идентичны)...
0
800 / 583 / 207
Регистрация: 21.02.2019
Сообщений: 2,095
23.07.2021, 12:57
m054,
.. вот тут посмотрите
C# – Deserialize JSON to dynamic object
0
29 / 1 / 0
Регистрация: 25.02.2020
Сообщений: 82
24.07.2021, 11:50  [ТС]
Такс...вроде что-то получается, но ничего не работает
Добавил класс, который содержит метод для считывания и десериализации JSON-файла.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    public class EnvironmentConstantsProvider
    {
        private const string _path = "JSON.txt";
        public void Provide(out Currency currencyObject)
        {
            string objectJsonFile = File.ReadAllText(_path);//данные считываются в строку 
            currencyObject = JsonSerializer.Deserialize<Currency>(objectJsonFile); //НО мой объект не инициализируется, т.е. все поля с дефолтными значениями
        }
    }
 
        static void Main(string[] args)
        {
            EnvironmentConstantsProvider provider = new EnvironmentConstantsProvider();
            Currency currency = new Currency();
            provider.Provide(out currency);
            Console.WriteLine(currency.Name);
        }
Не могу понять, почему currencyObject не инициализируется данными??

Добавлено через 2 часа 7 минут
Цитата Сообщение от esperanto_qun Посмотреть сообщение
Для данной сериализации, необходима библиотека - using Newtonsoft.Json;
Спасибо за решение! Не сразу разобрался что к чему!
0
29 / 1 / 0
Регистрация: 25.02.2020
Сообщений: 82
04.08.2021, 12:27  [ТС]
Сгенерировал класс для десериализации JSON файла
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
using System;
using System.Collections.Generic;
using System.Text;
 
namespace WorkToJSON_1
{
    public class Currency: Valute
    {
            public DateTime Date { get; set; }
            public DateTime PreviousDate { get; set; }
            public string PreviousURL { get; set; }
            public DateTime Timestamp { get; set; }
            public ValuteClass Valute { get; set; }
 
        public class ValuteClass
        {
            public AUD AUD { get; set; }
            public AZN AZN { get; set; }
            public GBP GBP { get; set; }
            public AMD AMD { get; set; }
            public BYN BYN { get; set; }
            public BGN BGN { get; set; }
            public BRL BRL { get; set; }
            public HUF HUF { get; set; }
            public HKD HKD { get; set; }
            public DKK DKK { get; set; }
            public USD USD { get; set; }
            public EUR EUR { get; set; }
            public INR INR { get; set; }
            public KZT KZT { get; set; }
            public CAD CAD { get; set; }
            public KGS KGS { get; set; }
            public CNY CNY { get; set; }
            public MDL MDL { get; set; }
            public NOK NOK { get; set; }
            public PLN PLN { get; set; }
            public RON RON { get; set; }
            public XDR XDR { get; set; }
            public SGD SGD { get; set; }
            public TJS TJS { get; set; }
            public TRY TRY { get; set; }
            public TMT TMT { get; set; }
            public UZS UZS { get; set; }
            public UAH UAH { get; set; }
            public CZK CZK { get; set; }
            public SEK SEK { get; set; }
            public CHF CHF { get; set; }
            public ZAR ZAR { get; set; }
            public KRW KRW { get; set; }
            public JPY JPY { get; set; }
        }
 
        public class AUD
        {
            public string ID { get; set; }
            public string NumCode { get; set; }
            public string CharCode { get; set; }
            public int Nominal { get; set; }
            public string Name { get; set; }
            public float Value { get; set; }
            public float Previous { get; set; }
        }
 
        public class AZN
        {
            public string ID { get; set; }
            public string NumCode { get; set; }
            public string CharCode { get; set; }
            public int Nominal { get; set; }
            public string Name { get; set; }
            public float Value { get; set; }
            public float Previous { get; set; }
        }
 
        public class GBP 
        {
            public string ID { get; set; }
            public string NumCode { get; set; }
            public string CharCode { get; set; }
            public int Nominal { get; set; }
            public string Name { get; set; }
            public float Value { get; set; }
            public float Previous { get; set; }
        }
 
        public class AMD 
        {
            public string ID { get; set; }
            public string NumCode { get; set; }
            public string CharCode { get; set; }
            public int Nominal { get; set; }
            public string Name { get; set; }
            public float Value { get; set; }
            public float Previous { get; set; }
        }
 
        public class BYN
        {
            public string ID { get; set; }
            public string NumCode { get; set; }
            public string CharCode { get; set; }
            public int Nominal { get; set; }
            public string Name { get; set; }
            public float Value { get; set; }
            public float Previous { get; set; }
        }
 
        public class BGN
        {
            public string ID { get; set; }
            public string NumCode { get; set; }
            public string CharCode { get; set; }
            public int Nominal { get; set; }
            public string Name { get; set; }
            public float Value { get; set; }
            public float Previous { get; set; }
        }
 
        public class BRL
        {
            public string ID { get; set; }
            public string NumCode { get; set; }
            public string CharCode { get; set; }
            public int Nominal { get; set; }
            public string Name { get; set; }
            public float Value { get; set; }
            public float Previous { get; set; }
        }
 
        public class HUF
        {
            public string ID { get; set; }
            public string NumCode { get; set; }
            public string CharCode { get; set; }
            public int Nominal { get; set; }
            public string Name { get; set; }
            public float Value { get; set; }
            public float Previous { get; set; }
        }
 
        public class HKD
        {
            public string ID { get; set; }
            public string NumCode { get; set; }
            public string CharCode { get; set; }
            public int Nominal { get; set; }
            public string Name { get; set; }
            public float Value { get; set; }
            public float Previous { get; set; }
        }
 
        public class DKK
        {
            public string ID { get; set; }
            public string NumCode { get; set; }
            public string CharCode { get; set; }
            public int Nominal { get; set; }
            public string Name { get; set; }
            public float Value { get; set; }
            public float Previous { get; set; }
        }
 
        public class USD
        {
            public string ID { get; set; }
            public string NumCode { get; set; }
            public string CharCode { get; set; }
            public int Nominal { get; set; }
            public string Name { get; set; }
            public float Value { get; set; }
            public float Previous { get; set; }
        }
 
        public class EUR
        {
            public string ID { get; set; }
            public string NumCode { get; set; }
            public string CharCode { get; set; }
            public int Nominal { get; set; }
            public string Name { get; set; }
            public float Value { get; set; }
            public float Previous { get; set; }
        }
 
        public class INR
        {
            public string ID { get; set; }
            public string NumCode { get; set; }
            public string CharCode { get; set; }
            public int Nominal { get; set; }
            public string Name { get; set; }
            public float Value { get; set; }
            public float Previous { get; set; }
        }
 
        public class KZT
        {
            public string ID { get; set; }
            public string NumCode { get; set; }
            public string CharCode { get; set; }
            public int Nominal { get; set; }
            public string Name { get; set; }
            public float Value { get; set; }
            public float Previous { get; set; }
        }
 
        public class CAD
        {
            public string ID { get; set; }
            public string NumCode { get; set; }
            public string CharCode { get; set; }
            public int Nominal { get; set; }
            public string Name { get; set; }
            public float Value { get; set; }
            public float Previous { get; set; }
        }
 
        public class KGS
        {
            public string ID { get; set; }
            public string NumCode { get; set; }
            public string CharCode { get; set; }
            public int Nominal { get; set; }
            public string Name { get; set; }
            public float Value { get; set; }
            public float Previous { get; set; }
        }
 
        public class CNY
        {
            public string ID { get; set; }
            public string NumCode { get; set; }
            public string CharCode { get; set; }
            public int Nominal { get; set; }
            public string Name { get; set; }
            public float Value { get; set; }
            public float Previous { get; set; }
        }
 
        public class MDL
        {
            public string ID { get; set; }
            public string NumCode { get; set; }
            public string CharCode { get; set; }
            public int Nominal { get; set; }
            public string Name { get; set; }
            public float Value { get; set; }
            public float Previous { get; set; }
        }
 
        public class NOK
        {
            public string ID { get; set; }
            public string NumCode { get; set; }
            public string CharCode { get; set; }
            public int Nominal { get; set; }
            public string Name { get; set; }
            public float Value { get; set; }
            public float Previous { get; set; }
        }
 
        public class PLN
        {
            public string ID { get; set; }
            public string NumCode { get; set; }
            public string CharCode { get; set; }
            public int Nominal { get; set; }
            public string Name { get; set; }
            public float Value { get; set; }
            public float Previous { get; set; }
        }
 
        public class RON
        {
            public string ID { get; set; }
            public string NumCode { get; set; }
            public string CharCode { get; set; }
            public int Nominal { get; set; }
            public string Name { get; set; }
            public float Value { get; set; }
            public float Previous { get; set; }
        }
 
        public class XDR
        {
            public string ID { get; set; }
            public string NumCode { get; set; }
            public string CharCode { get; set; }
            public int Nominal { get; set; }
            public string Name { get; set; }
            public float Value { get; set; }
            public float Previous { get; set; }
        }
 
        public class SGD
        {
            public string ID { get; set; }
            public string NumCode { get; set; }
            public string CharCode { get; set; }
            public int Nominal { get; set; }
            public string Name { get; set; }
            public float Value { get; set; }
            public float Previous { get; set; }
        }
 
        public class TJS
        {
            public string ID { get; set; }
            public string NumCode { get; set; }
            public string CharCode { get; set; }
            public int Nominal { get; set; }
            public string Name { get; set; }
            public float Value { get; set; }
            public float Previous { get; set; }
        }
 
        public class TRY
        {
            public string ID { get; set; }
            public string NumCode { get; set; }
            public string CharCode { get; set; }
            public int Nominal { get; set; }
            public string Name { get; set; }
            public float Value { get; set; }
            public float Previous { get; set; }
        }
 
        public class TMT
        {
            public string ID { get; set; }
            public string NumCode { get; set; }
            public string CharCode { get; set; }
            public int Nominal { get; set; }
            public string Name { get; set; }
            public float Value { get; set; }
            public float Previous { get; set; }
        }
 
        public class UZS
        {
            public string ID { get; set; }
            public string NumCode { get; set; }
            public string CharCode { get; set; }
            public int Nominal { get; set; }
            public string Name { get; set; }
            public float Value { get; set; }
            public float Previous { get; set; }
        }
 
        public class UAH
        {
            public string ID { get; set; }
            public string NumCode { get; set; }
            public string CharCode { get; set; }
            public int Nominal { get; set; }
            public string Name { get; set; }
            public float Value { get; set; }
            public float Previous { get; set; }
        }
 
        public class CZK
        {
            public string ID { get; set; }
            public string NumCode { get; set; }
            public string CharCode { get; set; }
            public int Nominal { get; set; }
            public string Name { get; set; }
            public float Value { get; set; }
            public float Previous { get; set; }
        }
 
        public class SEK
        {
            public string ID { get; set; }
            public string NumCode { get; set; }
            public string CharCode { get; set; }
            public int Nominal { get; set; }
            public string Name { get; set; }
            public float Value { get; set; }
            public float Previous { get; set; }
        }
 
        public class CHF
        {
            public string ID { get; set; }
            public string NumCode { get; set; }
            public string CharCode { get; set; }
            public int Nominal { get; set; }
            public string Name { get; set; }
            public float Value { get; set; }
            public float Previous { get; set; }
        }
 
        public class ZAR
        {
            public string ID { get; set; }
            public string NumCode { get; set; }
            public string CharCode { get; set; }
            public int Nominal { get; set; }
            public string Name { get; set; }
            public float Value { get; set; }
            public float Previous { get; set; }
        }
 
        public class KRW
        {
            public string ID { get; set; }
            public string NumCode { get; set; }
            public string CharCode { get; set; }
            public int Nominal { get; set; }
            public string Name { get; set; }
            public float Value { get; set; }
            public float Previous { get; set; }
        }
 
        public class JPY
        {
            public string ID { get; set; }
            public string NumCode { get; set; }
            public string CharCode { get; set; }
            public int Nominal { get; set; }
            public string Name { get; set; }
            public float Value { get; set; }
            public float Previous { get; set; }
        }
 
    }
}
Далее десериализовал JSON, получил объект класса. Как вытащить из объекта данные (они там есть)?
C#
1
2
3
4
5
            
            string path = Path.Combine("Currency.txt");
            var str = File.ReadAllText(path);
            var json = new Currency();
            json = Newtonsoft.Json.JsonConvert.DeserializeObject<Currency>(str);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.08.2021, 12:27
Помогаю со студенческими работами здесь

Считать данные с файла в массив объектов класса
Здравствуйте, реализовал функцию для считывания данных с файла в массив объектов класса. Все хорошо работает. void fill(Shop * A,...

Из json файла в коллекцию
Необходимо из файла, в котором находятся данные, записанные в формате json, создать коллекцию с экземплярами класса HumanBeing и...

Как считать строки из текстового файла в коллекцию?
Не работает код: List&lt;string&gt; tem104 = new List&lt;string&gt;(); public void tem_104() { int j...

Считать данные из JSON. Многомерный массив
Добрый день, есть JSON файл: { &quot;template&quot;:, , , ], &quot;parts&quot;:, , ,

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 23.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru