c++ - 从 JSon 获取 n 个对象及其字段,然后将它们存储为类对象
问题描述
我试图从 JSon 文件中获取有关我的对象的信息。它包含 n 个对象(例如 2 个),每个对象有 4 个字段。我通过 rapidjson 解析 .json,我的 IDE 是 Qt Creator。
我已经尝试使用http://rapidjson.org/md_doc_pointer.html#JsonPointer中描述的指针和他们的基本教程中的查询对象,但不知何故我无法让它工作。
这就是示例 .json 文件的外观。
{
"opiekun1" : {
"imie": "Maksym",
"nazwisko": "Zawrotny",
"email": "maksym@wp.pl",
"haslo": "herbatka"},
"opiekun2" : {
"imie": "Filip",
"nazwisko": "Szatkowski",
"email": "filip@wp.pl",
"haslo": "kawusia"}
}
我通过以下方式获取 DOM 文档:
FILE* fp = fopen(json_filename.c_str(), "rb");
char readBuffer[65536];
FileReadStream is(fp, readBuffer, sizeof(readBuffer));
Document d;
d.ParseStream(is);
我像这样尝试过 Pointer() :
Value* value = Pointer("/opiekun1/imie").Get(parsedJSon);
但我得到了:
invalid conversion from 'const rapidjson::GenericValue<rapidjson::UTF8<> >*' to 'rapidjson::Value* {aka rapidjson::GenericValue<rapidjson::UTF8<> >*}'
我的另一个尝试是遍历 Document 中的对象:
for (auto& object : parsedJSon.GetObject())
{
CUzytkownik* user;
user = new CUzytkownik;
int counter = 0;
for (Value::ConstMemberIterator itr = object.MemberBegin();
itr != object.MemberEnd(); itr++)
{
if (itr->name.GetString() == "imie")
user->imie = itr->value.GetString();
}
}
但它说:
const struct rapidjson::GenericMember<rapidjson::UTF8<>, rapidjson::MemoryPoolAllocator<> >' has no member named 'MemberEnd'
我认为我对处理 .json 文件中的对象有误解。谁能向我解释一下并提供一些示例代码?我希望我的输出看起来像这样:
CUzytkownik* opiekun1 = new CUzytkownik;
opiekun1->name = "Maksym";
opiekun1->nazwisko = "Zawrotny";
opiekun1->email = "maksym@wp.pl";
opiekun1->haslo = "herbatka";
如果有人对 rapidjson 有经验并愿意提供帮助,我将不胜感激。任何替代示例,如数组处理或类似的东西,也是最受欢迎的。
先感谢您!
解决方案
推荐阅读
- java - mvn checkstyle 插件:google_checks 未到达
- ios - 无论如何要在 macCatalyst 中构建 Couchbase Lite
- javascript - 我尝试使用 passport.js 对用户进行身份验证,但它给了我一个错误**服务器响应状态为 400(错误请求)**
- r - Read.csv 给数据集的数字错误
- amazon-s3 - 如何使用骆驼异常处理检查 AWS s3 存储桶中的文件可用性(例如:pdf 文件)
- pandas - 合并 2 个具有优先级的数据帧(如果特定列匹配,则 A 优先于 B)
- c# - 使用 .Date 时,EF 核心查询无法翻译
- machine-learning - 为什么 XOR 问题更适用于双极表示?
- reactjs - react-dom 17.0.0更新错误TypeError:init不是函数
- python - 如何分块加载yaml文件?