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;