Demo:JSON 工具
展示 JSON 布尔类型、对象合并、数组追加、序列化和字段提取。
1. 示例内容
示例中的关键调用使用中文注释,并与仓库源码、CMake 目标和当前 API 保持一致。
2. 构建与运行
cmake --build build --target sttnet_json_tools --parallel
./build/examples/sttnet_json_tools3. 运行结果
./build/examples/sttnet_json_tools预期:输出序列化对象、name 字段、保留布尔类型的小对象、合并后的对象、追加后的数组和 roles 字段。
4. 完整源码
#include <sttnet.h>
#include <iostream>
int main()
{
using stt::data::JsonHelper;
// 嵌套 JSON 最清晰的写法是直接使用 Json::Value。
Json::Value user(Json::objectValue);
user["id"]=1001;
user["name"]="Stephen";
user["online"]=true;
user["roles"].append("developer");
user["roles"].append("operator");
const std::string jsonText=JsonHelper::toString(user);
std::cout << "serialized: " << jsonText << '\n';
const Json::Value parsed=JsonHelper::toJsonArray(jsonText);
if(!parsed.isObject())
return 1;
std::cout << "name: " << parsed["name"].asString() << '\n';
// createJson() 会保留 JSON 布尔类型,不会把 true/false 写成整数。
const std::string small=JsonHelper::createJson("status","ok","online",true,"count",3);
std::cout << "small object: " << small << '\n';
// jsonAdd() 会合并对象成员,或把第二个数组的元素追加到第一个数组。对象
// 与数组混用属于无效操作,会返回空字符串。
std::cout << "merged object: "
<< JsonHelper::jsonAdd("{\"a\":1}","{\"b\":2}") << '\n';
std::cout << "appended array: "
<< JsonHelper::jsonAdd("[1]","[2,3]") << '\n';
std::string extracted;
const int type=JsonHelper::getValue(jsonText,extracted,"value","roles");
std::cout << "roles type=" << type << ", value=" << extracted << '\n';
return 0;
}