我想使用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 中写什么以使其工作?