STTNet 0.7.0

Demo:JSON 工具

展示 JSON 布尔类型、对象合并、数组追加、序列化和字段提取。

1. 示例内容

示例中的关键调用使用中文注释,并与仓库源码、CMake 目标和当前 API 保持一致。

2. 构建与运行

cmake --build build --target sttnet_json_tools --parallel
./build/examples/sttnet_json_tools

3. 运行结果

./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;
}