当前位置:   article > 正文

json创建,创建json数组数据C++_c++ json数组

c++ json数组

rapidjson

rapidjson是一个C++库,用于解析和生成JSON数据格式。它是一个高性能、轻量级的库,由于使用了DOM和SAX两种解析方式,可以满足不同场景的需求。rapidjson的特点包括:支持Unicode、跨平台、简单易用、解析速度快等。它可以在很多领域得到广泛应用,如网络通信、数据存储和数据交换等。

解析的工具有:

RapidJSON
JSON for Modern C++
Boost.PropertyTree
C++ REST SDK
QtJson
nlohmann/json
Jansson
cJSON
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

0创建一个json数据

#include "rapidjson/document.h"
#include "rapidjson/writer.h"
#include "rapidjson/stringbuffer.h"
#include "iostream"
using namespace rapidjson;

int main() {

//    // JSON字符串
//    const char* json = R"({"name":"John","age":30,"isStudent":true})";
//    // 解析JSON字符串
//    Document document;
//    document.Parse(json);
//    // 获取字段
//    const char* name = document["name"].GetString();
//    int age = document["age"].GetInt();
//    bool isStudent = document["isStudent"].GetBool();
//
//    // 输出结果
//    printf("name: %s\nage: %d\nisStudent: %s\n", name, age, isStudent ? "true" : "false");
//
//    return 0;
    rapidjson::Document document;  // 创建一个JSON文档对象
    document.SetObject();  // 将该文档对象设置为一个JSON对象
    rapidjson::Document::AllocatorType& allocator = document.GetAllocator();  // 获取分配器
    rapidjson::Value hobbies(rapidjson::kObjectType);  // 创建一个空对象
    // 向对象中添加键值对
    hobbies.AddMember("name", "reading", allocator);
    hobbies.AddMember("level", "advanced", allocator);
    // 将对象添加到JSON对象中
    document.AddMember("hobbies", hobbies, allocator);

    StringBuffer buffer;  // 创建一个字符串缓冲区
    Writer<StringBuffer> writer(buffer);  // 创建一个JSON写入器
    document.Accept(writer);  // 将JSON对象序列化为字符串并写入缓冲区
    // 输出结果
   std::cout<< buffer.GetString() << std::endl;
 
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40

创建一个json格式的数组数据,填入数据

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

using namespace rapidjson;

int main() {

    Document document;  // 创建一个JSON文档对象
    document.SetObject();  // 将该文档对象设置为一个JSON对象
    Document::AllocatorType& allocator = document.GetAllocator();  // 获取分配器
    Value hobbies(kArrayType);  // 创建一个空数组

    // 向数组中添加多个对象
    Value reading(kObjectType);
    reading.AddMember("name", "reading", allocator);
    reading.AddMember("level", "advanced", allocator);
    hobbies.PushBack(reading, allocator);

    Value swimming(kObjectType);
    swimming.AddMember("name", "swimming", allocator);
    swimming.AddMember("level", "beginner", allocator);
    hobbies.PushBack(swimming, allocator);

    // 将数组添加到JSON对象中
    document.AddMember("hobbies", hobbies, allocator);

    StringBuffer buffer;  // 创建一个字符串缓冲区
    Writer<StringBuffer> writer(buffer);  // 创建一个JSON写入器
    document.Accept(writer);  // 将JSON对象序列化为字符串并写入缓冲区

    // 输出结果
    std::cout << buffer.GetString() << std::endl;

    return 0;
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38

个人记录

3 创建后再读出来


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

using namespace rapidjson;

int main() {

    Document document;  // 创建一个JSON文档对象
    document.SetObject();  // 将该文档对象设置为一个JSON对象
    Document::AllocatorType &allocator = document.GetAllocator();  // 获取分配器
    Value hobbies(kArrayType);  // 创建一个空数组

    // 向数组中添加多个对象
    Value reading(kObjectType);
    reading.AddMember("name", "reading", allocator);
    reading.AddMember("level", "advanced", allocator);
    hobbies.PushBack(reading, allocator);

    // 将数组添加到JSON对象中
    document.AddMember("hobbies", hobbies, allocator);

    StringBuffer buffer;  // 创建一个字符串缓冲区
    Writer<StringBuffer> writer(buffer);  // 创建一个JSON写入器
    document.Accept(writer);  // 将JSON对象序列化为字符串并写入缓冲区



    //读出来
    Document document1;
    document1.Parse(buffer.GetString());
    //这一行代码是获取了名为"hobbies"的成员的值,它在之前的代码中被添加到了document对象中
    //hobbies1是一个引用,指向document对象中名为"hobbies"的成员的值,它是一个包含多个对象的数组。
    //这里使用const修饰表示hobbies1是一个只读的引用,即不能通过hobbies1修改document对象中的值。
    const Value &hobbies1 = document["hobbies"];
	//获取json数组的个数
    for (SizeType i = 0; i < hobbies1.Size(); i++) {
        const Value &hobby = hobbies1[i];
        const char *name = hobby["name"].GetString();
        const char *level = hobby["level"].GetString();
        std::cout << "Hobby " << i << ": name = " << name << ", level = " << level << std::endl;
    }

    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/689041
推荐阅读
相关标签
  

闽ICP备14008679号