首页 > 解决方案 > 我应该为 C++ 中的每种类型都有一个解析器吗?

问题描述

我目前正在为我的游戏构建一个简单的“关卡”系统,其中游戏对象由组件组成,并且该组件中的数据存储在 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 定义我的游戏对象,以便我可以在运行时将它们加载到我的游戏中。我的问题是我是否必须为 C++ 中每个不同的用户定义类型编写解析代码?

我有使用 Unity3D 的经验,它带有一个漂亮的JSONUtility,它可以自动映射到正确的字段(如果我没记错的话,使用反射)。有没有在 C++ 中执行此操作的库?我遇到了这个解析器,如果我没记错的话,它几乎仅限于使用它们各自的键逐个访问每个元素。

标签: c++jsonparsing

解决方案


通常有人已经做了你需要做的事情:-)

对于 C++,我喜欢nlohmann 的 JSON 标头库,到目前为止它已被证明是无价的。


推荐阅读