温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C++序列化库与JSON格式转换

发布时间:2024-09-19 11:24:43 来源:亿速云 阅读:116 作者:小樊 栏目:编程语言

在C++中,有多种库可以用于序列化和处理JSON格式的数据

  1. nlohmann/json:这是一个非常流行且易于使用的C++ JSON库。它提供了简单的API来解析、生成和操作JSON数据。GitHub地址:https://github.com/nlohmann/json

示例代码:

#include <iostream>
#include <nlohmann/json.hpp>

using json = nlohmann::json;

int main() {
    // 创建一个JSON对象
    json j = {
        {"name", "John"},
        {"age", 30},
        {"is_student", false}
    };

    // 将JSON对象转换为字符串
    std::string json_str = j.dump();
    std::cout << "JSON string: " << json_str << std::endl;

    // 从字符串解析JSON对象
    json parsed_json = json::parse(json_str);
    std::cout << "Parsed name: " << parsed_json["name"] << std::endl;
    std::cout << "Parsed age: " << parsed_json["age"] << std::endl;
    std::cout << "Parsed is_student: " << parsed_json["is_student"] << std::endl;

    return 0;
}
  1. RapidJSON:这是一个高性能的C++ JSON库,具有低内存开销和快速的解析速度。GitHub地址:https://github.com/Tencent/rapidjson

示例代码:

#include <iostream>
#include <rapidjson/document.h>
#include <rapidjson/writer.h>
#include <rapidjson/stringbuffer.h>

using namespace rapidjson;

int main() {
    // 创建一个JSON对象
    Document d;
    d.SetObject();
    d.AddMember("name", "John", d.GetAllocator());
    d.AddMember("age", 30, d.GetAllocator());
    d.AddMember("is_student", false, d.GetAllocator());

    // 将JSON对象转换为字符串
    StringBuffer buffer;
    Writer<StringBuffer> writer(buffer);
    d.Accept(writer);
    std::string json_str = buffer.GetString();
    std::cout << "JSON string: " << json_str << std::endl;

    // 从字符串解析JSON对象
    Document parsed_json;
    parsed_json.Parse(json_str.c_str());
    std::cout << "Parsed name: " << parsed_json["name"].GetString() << std::endl;
    std::cout << "Parsed age: " << parsed_json["age"].GetInt() << std::endl;
    std::cout << "Parsed is_student: " << (parsed_json["is_student"].GetBool() ? "true" : "false") << std::endl;

    return 0;
}

这些库都提供了详细的文档和示例,可以帮助您快速上手并在项目中使用它们。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c++
AI