下面是一个使用 JsonCpp 库进行 JSON 数据解析和生成的示例:
#include <iostream>
#include <json/json.h>
int main() {
// 创建一个 JSON 字符串
std::string jsonString = R"(
{
"name": "John",
"age": 30,
"city": "New York",
"pets": ["dog", "cat"]
}
)";
// 解析 JSON 字符串
Json::Value root;
Json::CharReaderBuilder readerBuilder;
std::stringstream ss(jsonString);
std::string parseError;
bool parsingSuccessful = Json::parseFromStream(readerBuilder, ss, &root, &parseError);
if (!parsingSuccessful) {
std::cout << "Failed to parse JSON: " << parseError << std::endl;
return 1;
}
// 获取 JSON 数据中的值
std::string name = root["name"].asString();
int age = root["age"].asInt();
std::string city = root["city"].asString();
std::vector<std::string> pets;
const Json::Value& petsJson = root["pets"];
for (const auto& pet : petsJson) {
pets.push_back(pet.asString());
}
// 输出获取到的值
std::cout << "Name: " << name << std::endl;
std::cout << "Age: " << age << std::endl;
std::cout << "City: " << city << std::endl;
std::cout << "Pets: ";
for (const auto& pet : pets) {
std::cout << pet << " ";
}
std::cout << std::endl;
// 创建一个新的 JSON 对象
Json::Value newJson;
newJson["status"] = "success";
newJson["message"] = "Data saved successfully";
// 将 JSON 对象转换为字符串
Json::StreamWriterBuilder writerBuilder;
std::string newJsonString = Json::writeString(writerBuilder, newJson);
// 输出新的 JSON 字符串
std::cout << "New JSON: " << newJsonString << std::endl;
return 0;
}
这个示例展示了如何解析一个 JSON 字符串,并从中获取值,以及如何创建一个新的 JSON 对象并将其转换为字符串。
注意:在编译时需要链接 JsonCpp 库。在 Linux 系统中可以使用以下命令进行编译:
g++ -o json_example json_example.cpp -ljsoncpp