我应该为C ++中的每个类型提供一个解析器吗?

时间:2019-05-25 17:30:02

标签: c++ json parsing

我目前正在为我的游戏构建一个简单的“关卡”系统,其中游戏对象由组件组成,该组件中的数据存储在JSON中。假设我有以下结构:

struct SpriteComponent
{
    int textureID;
    std::string resource;
};

struct TransformComponent
{
    Vector3 position;
    Vector3 rotation;
    Vector3 scale;
};

Vector3所在的位置

struct Vector3
{
    float x;
    float y;
    float z;    
};

我需要使用JSON定义我的Gameobject,以便可以在运行时将它们加载到游戏中。我的问题是我是否必须为C ++中每个不同的用户定义类型编写一个解析代码?

我有使用Unity3D的经验,它带有一个Nifty JSONUtility,可以自动映射到正确的字段(如果我没记错的话,可以使用Reflection)。有没有使用C ++做到这一点的库?我碰到了this Parser,如果我没记错的话,它几乎仅限于使用它们各自的键来逐一访问每个元素。

2 个答案:

答案 0 :(得分:2)

通常有人已经做过您需要做的事情:-)

对于C ++,我喜欢nlohmann's JSON header library,到目前为止,它已被证明是无价的。

答案 1 :(得分:1)

似乎Unity是通过反射来实现的,而反射目前还不是C ++的一部分。感谢Library的指导,我找到了toπάντα ῥεῖ