mirror of
				https://github.com/ciphervance/supercell-wx.git
				synced 2025-10-31 21:40:05 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			58 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #include <scwx/qt/util/json.hpp>
 | |
| #include <scwx/util/json.hpp>
 | |
| #include <scwx/util/logger.hpp>
 | |
| 
 | |
| #include <QFile>
 | |
| #include <QTextStream>
 | |
| 
 | |
| namespace scwx::qt::util::json
 | |
| {
 | |
| 
 | |
| static const std::string logPrefix_ = "scwx::qt::util::json";
 | |
| static const auto        logger_    = scwx::util::Logger::Create(logPrefix_);
 | |
| 
 | |
| static boost::json::value ReadJsonFile(QFile& file);
 | |
| 
 | |
| boost::json::value ReadJsonQFile(const std::string& path)
 | |
| {
 | |
|    boost::json::value json;
 | |
| 
 | |
|    if (path.starts_with(":"))
 | |
|    {
 | |
|       QFile file(path.c_str());
 | |
|       json = ReadJsonFile(file);
 | |
|    }
 | |
|    else
 | |
|    {
 | |
|       json = ::scwx::util::json::ReadJsonFile(path);
 | |
|    }
 | |
| 
 | |
|    return json;
 | |
| }
 | |
| 
 | |
| static boost::json::value ReadJsonFile(QFile& file)
 | |
| {
 | |
|    boost::json::value json;
 | |
| 
 | |
|    if (file.open(QIODevice::ReadOnly))
 | |
|    {
 | |
|       QTextStream jsonStream(&file);
 | |
|       jsonStream.setEncoding(QStringConverter::Utf8);
 | |
| 
 | |
|       std::string        jsonSource = jsonStream.readAll().toStdString();
 | |
|       std::istringstream is {jsonSource};
 | |
| 
 | |
|       json = ::scwx::util::json::ReadJsonStream(is);
 | |
| 
 | |
|       file.close();
 | |
|    }
 | |
|    else
 | |
|    {
 | |
|       logger_->warn("Could not open file for reading: \"{}\"",
 | |
|                     file.fileName().toStdString());
 | |
|    }
 | |
| 
 | |
|    return json;
 | |
| }
 | |
| 
 | |
| } // namespace scwx::qt::util::json
 | 
