Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.01.2019, 22:16   #1
Harryss
Новичок
Джуниор
 
Регистрация: 17.01.2019
Сообщений: 2
По умолчанию Библиотека JSON | Изменение значений файла

Использую следующую библиотеку от nlohmann для работы с .JSON - https://github.com/nlohmann/json
Проблема заключается в том, что не могу изменить значение внутри .JSON файла. Выглядит .JSON следующим образом.
Код:
{"Settings":{"AutoReload":true,"CheckingUpdates":false}}
Необходимо мне, например, работать со значением "Settings - AutoReload", то бишь значение "True" заменить, заменить хоть на тот же "False". Мой текущий код просто переписывает весь файл, это все, до чего я додумался. Помогите, уважаемые.
Код:
// Код, выполняющийся при загрузке программы
std::ifstream fin("img.json");
if (!fin.is_open())
{
	json my_obj;
	my_obj["Settings"] = { {"AutoReload", true}, {"CheckingUpdates", false} };

	std::string dumped_json = my_obj.dump();
	std::ofstream fout("img.json");
	fout << dumped_json;
	fout.close();
}

 // Код в Mainloop

json new_obj;
new_obj["Settings"] = {
    {"AutoReload", false}
};

std::string new_dumped_json = new_obj.dump();
std::ofstream fout("img.json");
fout << new_dumped_json;
fout.close();
Harryss вне форума Ответить с цитированием
Старый 17.01.2019, 22:34   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от Harryss Посмотреть сообщение
Мой текущий код просто переписывает весь файл
а как иначе? Нельзя ж просто вставить что-то в середине файла, разве что перезаписать одни байты другими, но у вас строки разной длины.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 17.01.2019, 22:48   #3
Harryss
Новичок
Джуниор
 
Регистрация: 17.01.2019
Сообщений: 2
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
а как иначе? Нельзя ж просто вставить что-то в середине файла, разве что перезаписать одни байты другими, но у вас строки разной длины.
Выходит, что использовать JSON для такого хранения данных, нуждающегося в перезаписи, далеко не лучшее решение?
Harryss вне форума Ответить с цитированием
Старый 17.01.2019, 23:16   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Он у вас 5 ГБ весит?

Если очень надо, то можно упороться и добавить кучу пробелов при создании (+ неиспользуемые элементы в массивах и т.п.), потом их менять (естественно без готовых библиотек).
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 17.01.2019 в 23:19.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Си. Чтение json файла Bayern_M Помощь студентам 4 27.04.2015 14:08
Изменение значений в диапазоне. СИ Bayern_M Помощь студентам 6 14.04.2015 19:56
[c#] Чтение JSON файла Ghost3 Помощь студентам 1 29.07.2014 12:43
json библиотека Superobject C_R_E_S_C_H Общие вопросы Delphi 0 20.05.2012 22:21
Библиотека численных значений и цифр Randy.Mandy Microsoft Office Excel 6 10.02.2012 14:21