Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.54/26: Рейтинг темы: голосов - 26, средняя оценка - 4.54
1 / 0 / 2
Регистрация: 02.11.2018
Сообщений: 39
.NET Core

Парсинг файла json и генерация INI файлов из него

26.01.2021, 12:03. Показов 5738. Ответов 23

Студворк — интернет-сервис помощи студентам
Всем привет!

Прошу помочь со следующей проблемой.

Есть файл BankTest.json по пути "d:\MyProjects\BankTest.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
[
    {
        "bankName":"«СБЕРБАНК»",
        "type":"Type1",
        "bank_id": "1"
    },
    {
        "bankName":"«Тинькофф»",
        "type":"Type2",
        "bank_id": "2"
    },
    {
        "bankName":"«АльфаБанк»",
        "type":"Type1",
        "bank_id": "3"
    },
    {
        "bankName":"«ВТБ24»",
        "type":"Type1",
        "bank_id": "4"
    },  
    {
        "bankName":"«МКБ»",
        "type":"Type2",
        "bank_id": "5"
    }
]
Как из данного файла (создать массив и брать оттуда значения, я думаю) получить значения полей каждого из объектов и создать из каждого объекта INI файл с названием BankInfoN.ini, где каждый N будет равен порядковому номеру банка bank_id?

Пример INI файла BankInfo4.ini:
Code
1
2
3
BankName = «ВТБ24»
BankType = Type1
BankId = 4
Newtonsoft.Json установил и подключил.

Нашел как создать класс для моего файла json:
C#
1
2
3
4
5
6
    public class Root
    {
        public string bankName { get; set; }
        public string type { get; set; }
        public string pay_id { get; set; }
    }
А дальше завис... Спасибо заранее.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.01.2021, 12:03
Ответы с готовыми решениями:

Парсинг json файла и занесение в него данных
Всем привет. Как то спрашивал тут о парсинге json с помощью JSON.NET, но потом тему потерял, а вопросы остались. Есть json файл: { ...

Парсинг ini файлов
Добрый день! Отчаянно нуждаюсь в помощи! Суть проблемы, стоит на хостинге joomla 2.5, стоит на ней компонент, переведён ручками. Но...

Динамическая генерация таблиц из ini файла
Привет всем! Помогите пожалуйста в решении одной задачи, я в php новичок, писал только на системных языках. Задача следующая : есть ini...

23
1 / 0 / 2
Регистрация: 02.11.2018
Сообщений: 39
01.02.2021, 11:04  [ТС]
Студворк — интернет-сервис помощи студентам
Элд_Хасп, спасибо большое. благодаря Вам я смогу оптимизировать часть своей работы. =)
Образец массива во вложении - index_search.rar - вроде бы JS.
JavaScript
1
2
3
4
5
6
7
8
var searchData=[
["Название банка 1" , "BankSearch.gif" , "BankInfo1.ini" , "Банки" , "банк, тест, тестовый" , " "],
["Название банка 2" , "BankSearch.gif" , "BankInfo2.ini" , "Банки" , "банк, тест, тестовый" , " "],
["Название банка 3" , "BankSearch.gif" , "BankInfo3.ini" , "Банки" , "банк, тест, тестовый" , " "],
["Название банка 4" , "BankSearch.gif" , "BankInfo4.ini" , "Банки" , "банк, тест, тестовый" , " "],
["Название банка 5" , "BankSearch.gif" , "BankInfo5.ini" , "Банки" , "банк, тест, тестовый" , " "],
["Название банка 6" , "BankSearch.gif" , "BankInfo6.ini" , "Банки" , "банк, тест, тестовый" , " "]
];
Запустил программу, все отработало, но массив странный вышел - allBanks.rar
JSON
1
[["\u00AB\u0421\u0411\u0415\u0420\u0411\u0410\u041D\u041A\u00BB","BankSearch.gif","FilesINI\\BankInfo1.ini","\u0411\u0430\u043D\u043A\u0438","\u0431\u0430\u043D\u043A, \u0442\u0435\u0441\u0442, \u0442\u0435\u0441\u0442\u043E\u0432\u044B\u0439"," "],["\u00AB\u0422\u0438\u043D\u044C\u043A\u043E\u0444\u0444\u00BB","BankSearch.gif","FilesINI\\BankInfo2.ini","\u0411\u0430\u043D\u043A\u0438","\u0431\u0430\u043D\u043A, \u0442\u0435\u0441\u0442, \u0442\u0435\u0441\u0442\u043E\u0432\u044B\u0439"," "],["\u00AB\u0410\u043B\u044C\u0444\u0430\u0411\u0430\u043D\u043A\u00BB","BankSearch.gif","FilesINI\\BankInfo3.ini","\u0411\u0430\u043D\u043A\u0438","\u0431\u0430\u043D\u043A, \u0442\u0435\u0441\u0442, \u0442\u0435\u0441\u0442\u043E\u0432\u044B\u0439"," "],["\u00AB\u0412\u0422\u041124\u00BB","BankSearch.gif","FilesINI\\BankInfo4.ini","\u0411\u0430\u043D\u043A\u0438","\u0431\u0430\u043D\u043A, \u0442\u0435\u0441\u0442, \u0442\u0435\u0441\u0442\u043E\u0432\u044B\u0439"," "],["\u00AB\u041C\u041A\u0411\u00BB","BankSearch.gif","FilesINI\\BankInfo5.ini","\u0411\u0430\u043D\u043A\u0438","\u0431\u0430\u043D\u043A, \u0442\u0435\u0441\u0442, \u0442\u0435\u0441\u0442\u043E\u0432\u044B\u0439"," "]]
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16157 / 11277 / 2891
Регистрация: 21.04.2018
Сообщений: 33,163
Записей в блоге: 2
01.02.2021, 14:05
Цитата Сообщение от NickPS Посмотреть сообщение
все отработало, но массив странный вышел - allBanks.rar
Это чё-то с кодировкой.
Даже с ходу не скажу как исправить.
Сам очень редко сталкиваюсь с изменениями кодировки.
P.S.
И лучше выкладывайте тексты в сообщениях.
Смотреть архивы - очень не удобно.
Прилагайте их как дополнение к сообщению, а не его замену.

В сообщение выше я внесу изменения.


Добавлено через 4 минуты
Цитата Сообщение от NickPS Посмотреть сообщение
вроде бы JS.
Не понял.
Это же Шарп?
Что за образец? Часть кода?

Покажите весь ваш код имеющий отношение к проблеме.
1
1 / 0 / 2
Регистрация: 02.11.2018
Сообщений: 39
08.02.2021, 10:56  [ТС]
Элд_Хасп, вторую часть проблемы, где требовалось создать файл JavaScript - allBanks.js, содержание которого будет выглядеть следующим образом, удалось решить:
JavaScript
1
2
3
4
5
6
7
8
var searchData=[
["Название банка 1" , "BankSearch.gif" , "BankInfo1.ini" , "Банки" , "банк, тест, тестовый" , " "],
["Название банка 2" , "BankSearch.gif" , "BankInfo2.ini" , "Банки" , "банк, тест, тестовый" , " "],
["Название банка 3" , "BankSearch.gif" , "BankInfo3.ini" , "Банки" , "банк, тест, тестовый" , " "],
["Название банка 4" , "BankSearch.gif" , "BankInfo4.ini" , "Банки" , "банк, тест, тестовый" , " "],
["Название банка 5" , "BankSearch.gif" , "BankInfo5.ini" , "Банки" , "банк, тест, тестовый" , " "],
["Название банка 6" , "BankSearch.gif" , "BankInfo6.ini" , "Банки" , "банк, тест, тестовый" , " "]
];
Решение через запись в потоке в методе SaveToIni (весь код готовой программы):

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
    class Programm
    {
        static void Main(string[] args)
        {
            var banks = BankJson.Deserialize("BankTest.json");
            BankJson.SaveToIni(banks, "FilesINI", "allBanks.js");
        }
 
    }
    public class BankJson
    {
        public string bankName { get; set; }
        public string type { get; set; }
        public string bank_id { get; set; }
 
        public static void Serialise(IEnumerable<BankJson> banks, string fileName)
            => File.WriteAllText(fileName, JsonSerializer.Serialize(banks.ToList()));
        public static List<BankJson> Deserialize(string fileName)
            => JsonSerializer.Deserialize<List<BankJson>>(File.ReadAllText(fileName));
 
        public static void SaveToIni(IEnumerable<BankJson> banks, string pathFolder, string jsonFile)
        {
            Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
 
            int count = 0;
 
            string Path = $"{pathFolder}\\allBanks.js";
 
            string textstart = $"var searchData=[\n";
            string textend = $"];";
 
            File.Delete(Path);
 
            FileStream file = new FileStream(Path, FileMode.OpenOrCreate);
            StreamWriter stream = new StreamWriter(file);
 
            stream.Write(textstart);
 
            foreach (var bank in banks)
            {
                count++;
                string ini =
$@"BankName = {bank.bankName}
BankType = {bank.type}
BankId = {bank.bank_id}";
                string fileName = $"{pathFolder}\\BankInfo{count}.ini";
                File.WriteAllText(fileName, ini, Encoding.GetEncoding(1251));
 
                string text = $"[\"{bank.bankName}\" , \"BankSearch.gif\" , \"BankInfo{count}.ini\" , \"Банки\" , \"банк, тест, тестовый\" , \" \"],\n";
                file.Seek(0, SeekOrigin.End);
                
                //stream.WriteLine(text);
                stream.Write(text);
            }
 
            file.Seek(0, SeekOrigin.End);
            stream.Write(textend);
 
            stream.Close();
            file.Close();
        }
 
    }
Уверен, что решение достаточно топорное, но работает. =)

Элд_Хасп, спасибо большое за помощь и консультации еще раз.

Добавлено через 25 минут
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16157 / 11277 / 2891
Регистрация: 21.04.2018
Сообщений: 33,163
Записей в блоге: 2
08.02.2021, 12:47
Цитата Сообщение от NickPS Посмотреть сообщение
Уверен, что решение достаточно топорное, но работает.
Из форума Метанита:
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
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.Encodings.Web;
using System.Text.Json;
using System.Text.Unicode;
 
namespace BanksJson
{
    public class BankJson
    {
        public string bankName { get; set; }
        public string type { get; set; }
        public string bank_id { get; set; }
 
        public static void Serialise(IEnumerable<BankJson> banks, string fileName)
            => File.WriteAllText(fileName, JsonSerializer.Serialize(banks.ToList()));
        public static List<BankJson> Deserialize(string fileName)
            => JsonSerializer.Deserialize<List<BankJson>>(File.ReadAllText(fileName));
 
        private static readonly JsonSerializerOptions options = new JsonSerializerOptions()
        {
            AllowTrailingCommas = true,
            PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
            Encoder = JavaScriptEncoder.Create(UnicodeRanges.All), // Вот эта строка Вам поможет с кодировкой
            WriteIndented = true
        };
 
 
        public static void SaveToIni(IEnumerable<BankJson> banks, string pathFolder, string jsonFile)
        {
            List<string[]> list = new List<string[]>();
            string[] array = { "Название банка 1", "BankSearch.gif", "BankInfo1.ini", "Банки", "банк, тест, тестовый", " " };
            int count = 0;
            foreach (var bank in banks)
            {
                count++;
                string ini =
$@"BankName = {bank.bankName}
BankType = {bank.type}
BankId = {bank.bank_id}";
                string fileName = $"{pathFolder}\\BankInfo{count}.ini";
                File.WriteAllText(fileName, ini, Encoding.GetEncoding(1251));
 
                array[0] = bank.bankName;
                array[2] = fileName;
                list.Add(array.ToArray());
            }
            File.WriteAllText(jsonFile, JsonSerializer.Serialize(list, options), Encoding.GetEncoding(1251));
        }
    }
 
}
Добавлено через 2 минуты
Документация: Класс JsonSerializerOptions
4
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.02.2021, 12:47

Пинг через парсинг ini-файла
1) Нужно парсинговать txt. файл с расширением ini, который расположен в C:\ а в txt. файле написано следующее: a=b host=localhost ...

Генерация json файла
Доброго времени суток. Подскажите, пожалуйста, можно ли генерировать json файл на клиенте. И если да, то как.

Парсинг JSON-файла
Есть файл со следующим содержимым: т.е. только со значениями! Как его распарсить?? Этот способ не работает: void...

Парсинг JSON файла
Здравствуйте, есть форма html где имеется кнопка по нажатию которой загружается файл, нужно реализовать так, чтобы по нажатию загружался...

Парсинг Json файла
День добрый. Есть вот такой json файл Пытаюсь его так парсить, но выдает пустую страницу ...


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

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Новые блоги и статьи
Запрет пометки на удаление и отмены проведения
Maks 16.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "ПутевойЛист" разработанного в КА2. Задача: запретить помечать на удаление и отменять проведения путевого листа при условии, если он сдан. . .
Как надо было делать правильно - вообще не слушать ИИ, его дело - текст.
Hrethgir 15.07.2026
А вообще надо было делать не так, чтобы не исправлять ошибку https:/ / www. cyberforum. ru/ blogs/ 223907/ 10996. html , правильно было : удалил кнопку, а потом добавил её. Всё это стресс конечно. Почему?. . .
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот. Ларри Уингет
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru