添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

rapidjson 遍历对象

RapidJSON 是一个高效的 C++ JSON 库,它提供了一系列遍历 JSON 对象的方法。您可以使用 RapidJSON 的 Value 类来表示 JSON 对象,然后使用其成员函数来遍历对象中的元素。

如果要遍历 JSON 对象中的所有键值对,您可以使用 MemberIterator 类,它是一个迭代器类型,可以循环遍历 JSON 对象中的所有成员。例如:

#include "rapidjson/document.h"
#include "rapidjson/writer.h"
#include "rapidjson/stringbuffer.h"
using namespace rapidjson;
int main() {
    const char* json = "{\"project\":\"rapidjson\",\"stars\":10}";
    Document d;
    d.Parse(json);
    assert(d.IsObject());
    for (Value::ConstMemberIterator itr = d.MemberBegin(); itr != d.MemberEnd(); ++itr) {
        printf("Name: %s\n", itr->name.GetString());
        printf("Value: ");
        if (itr->value.IsInt())
            printf("%d\n", itr->value.GetInt());
        else if (itr->value.IsString())
            printf("%s\n", itr->value.GetString());
    return 0;

如果您想遍历 JSON 数组,您可以使用 SizeType 和 Value 的下标运算符 []。例如:

#include "rapidjson/document.h"
#include "rapidjson/writer.h"
#include "rapidjson/stringbuffer.h"
using namespace rapidjson;
int main() {
    const char* json = "[{\"project\":\"rapidjson\",\"stars\":10},{\"project\":\"poco\",\"stars\":5}]";
    Document d;
    d.Parse(json);
    assert(d.IsArray());
    for (SizeType i = 0; i < d.Size(); i++) {
        const Value& object = d[i];
        assert(object.IsObject());
        for (Value::ConstMemberIterator itr = object.MemberBegin(); itr != object.MemberEnd(); ++itr) {
            printf("Name: %s\n", itr->name.GetString());
            printf("Value: ");
            if (itr->value.IsInt())
                printf("%d\n", itr->value.GetInt());
            else if (itr->value.IsString())
                printf("%s\n", itr->value.GetString());
    return 0;
  •