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

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

26.01.2021, 12:03. Показов 5859. Ответов 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
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 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
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,175
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru