Основная идея заключается в динамическом извлечении значения 3 полей в главной функции из Config.json
, а именно Id
, Encoding
, Signature
зависит от передаваемого Id
.
Прежде всего, в файле Config.json
:
Зависит от идентификатора, будет применен другой выбор
например. если Id 509 пройден:
{
«Id»: 509,
«Кодировка»: «НЕТ-КОДИРОВАНИЕ»,
«Подпись»: «X509»
}
будет применяться.
Config.json
{
"SchemaIdForUsage":509,
"Schema":[
{
"Id":100,
"Encoding":"NO-ENCODING",
"Signature":"MD5"
},
{
"Id":509,
"Encoding":"NO-ENCODING",
"Signature":"X509"
}
]
}
Я использовал приведенный ниже код для анализа JSON из Config.json
:
test.cpp
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int getfile()
{
string line;
ifstream myfile("E:\\config.json");
if (myfile.is_open())
{
while (myfile.good())
{
getline(myfile, line);
cout << line << endl;
}
myfile.close();
}
else cout << "Unable to open file";
system("pause");
return 0;
}
int main()
{
getfile();
return 0;
}
Библиотека JSON
https://github.com/mrtazz/restclient-cpp
Надеюсь, я дал понять, как новичок в C ++.
Мне интересно, какой лучший подход для динамического извлечения этих трех полей из файла JSON зависит от передаваемого идентификатора. Спасибо за вашу помощь.
Обновлен ответ: использование библиотеки restclient для анализа JSON
Я использовал приведенный ниже код, чтобы попытаться получить JSON
std::ifstream file_input("E:\\test.txt");
Json::Reader reader;
Json::Value root;
reader.parse(file_input, root);
std::cout<<root["Id"];
Json::Value testing = root["Schema"]["Id"];
В отладчике

Я пытаюсь получить значение полей Id
например: 100, Encoding
например "NO-ENCODING"
Там ошибка показывает необработанную ошибку
Любая идея будет принята с благодарностью. Спасибо,