使用 libJson 创建结构数组
Posted
技术标签:
【中文标题】使用 libJson 创建结构数组【英文标题】:Creating an array of structures using libJson 【发布时间】:2014-02-26 03:00:05 【问题描述】:我正在使用 libJson(C++ 库)来解析 JSON 文件。我的 JSON 文件如下所示。
"Comany":
"name": "Some Company",
"Resources":
"employees": [
"name": "John", "id": "23432",
"name": "Alex", "id": "32432"
],
"Computers": [
"IPAddress": "192.168.1.3", "CPU": "IntelCorei5",
"IPAddress": "192.168.1.4", "CPU": "IntelCorei3"
]
我有 Employee 和 Computer 的结构。我想创建一个结构数组。
有什么想法可以用 libJson 完成吗?
【问题讨论】:
为什么不创建一个vector<Employee>
并 push_back 到它?
我的问题是知道如何使用 libJson 从 JSON 字符串中读取数组(不知道如何创建结构数组)。我发现 json-c lib 是更好的选择。
【参考方案1】:
Pakal Persist 看起来非常适合您尝试做的事情。
由于在 c++ 中没有反射,因此您唯一需要做的就是添加一个成员函数。
#include "JsonReader.h"
struct Computer
std::string IPAddress;
std::string CPU;
void persist(Archive* archive)
a->value("IPAddress",IPAddress);
a->value("CPU",CPU);
struct Employee
std::string name;
int id;
void persist(Archive* archive)
a->value("name",name);
a->value("id",id);
struct Resources
std::vector<Employee> employees;
std::vector<Computer*> Computers;
void persist(Archive* archive)
archive->value("employees","employee",employees);
archive->value("Computers","computer",Computers);
struct Company
std::string name;
Resources resources;
void persist(Archive* a)
a->value("name",name);
a->value("Resources",resources);
Company company;
JsonReader reader;
reader.read("company.json","Company",company);
【讨论】:
以上是关于使用 libJson 创建结构数组的主要内容,如果未能解决你的问题,请参考以下文章