1

我想使用nlohmann/json库将一些 json 序列化为 QObject,反之亦然。

我遇到的问题是解析器试图使用 QObject 的复制构造函数,wish 是不允许的。

文档中有关于此https://github.com/nlohmann/json#how-can-i-use-get-for-non-default-constructiblenon-copyable-types的内容,但我无法做到工作。

template <>
struct adl_serializer<MyQObject>
{
    static MyQObject from_json(const json& j)
    {
        return {j.get<MyQObject>()}; // call to implicitly-deleted copy constructor of 'MyQObject'
    }

    static void to_json(json& j, MyQObject t)
    {
        j = t; // no viable overload '='
    }
};

inline void from_json(const json& j, MyQObject& x)
{
    x.setXxx(j.at("xxx").get<typeOfXxx>()):
    // ...
}

inline void to_json(json& j, const MyQObject& x)
{
    j = json::object();
    j["xxx"] = x.xxx();
    // ...
}

我应该在 adl_serializer 中写什么以使其工作?

4

0 回答 0