У меня есть ключи и значения в виде строк, и мне нужно объединить их в формат json.
Например: мой массив строк "keys"
: {"a","b","c","d"}
мой массив строк "values"
я прохожу через цикл for, так как он хранится в массиве X
X[0], X[1], X[2] and so on..
как мне совместить "keys"
и "values"
чтобы это выглядело так:
{ "a":"x","b":"y", "c":"z", "d":"q"
}
Я пробовал повторять и комбинировать, но я застрял
std::string values = "";
std::string keys[4] = {"a","b","c","d"};
..
..
..
for(int i=0;i<4;i++)
{
values= values + "," + x[i];
}
Я не понимаю, как мне объединить эти две строки и отобразить результирующую строку, которая выглядит так:
{ "a":"x",
"b":"y",
"c":"z",
"d":"q"
}
сделаю это, спасибо @Someprogrammerdude
@KaranMotiramani: Пожалуйста, взгляните на раздел JSON здесь (en.cppreference.com/w/cpp/links/libs). Если вам удобно работать с C++11 или более поздней версии, хорошей отправной точкой будет JSON для современного C++ (github.com/nlohmann/json).
Я бы повторил вышесказанное, никогда не пишите синтаксический анализатор или писатель для стандартного формата файла, если вам это действительно не нужно, обычно есть библиотека, которая уже существует и уже нашла и исправила ошибки и крайние случаи
Вы должны использовать библиотеку для синтаксического анализа или создать строку JSON. И если вам не нужен третий: std::string keys = {"a","b","c","d"}; std::string x = {"x", "y", "z", "q"}; std::string values = "{"; for(int i=0;i<4;i++) { values += keys[i] + ":" + x[i]; значения += (я == 3) ? "}" : ","; }
Содержимое вашего цикла for должно быть примерно таким: values = values + keys[i] + "," + x[i] + ",";
.
Ручной способ можно сделать так:
std::string res = "{";
std::string keys[4] = {"a","b","c","d"};
std::string values[4] = {"a","b","c","d"};
const char* sep = "";
for(int i=0;i<4;i++)
{
res += sep + keys[i] + ":" + values[i];
sep = ",";
}
res += "}";
Используя любую библиотеку json, вы можете сделать что-то вроде:
Json::Value root(Json::ValueType::objectValue);
for (int i = 0; i < 4; i++) {
root[keys[i]] = values[i];
}
Json::StyledWriter writer;
writer.write(root);
Вы добавили тег
jsoncpp
к своему вопросу. Этот тег предназначен для конкретной библиотеки JSON для C++. Существуют также другие библиотеки JSON, которые вы можете использовать из C++, которые помогут вам создавать объекты JSON. Я предлагаю вам потратить некоторое время на поиск таких библиотек и на то, как их использовать.