#include <nlohmann/json.hpp>
using json = nlohmann::json;
// 假设这是MenuItem类的定义
class MenuItem {
public:
std::string name;
std::vector<MenuItem> children;
};
namespace nlohmann {
template <>
void from_json(const json& j, MenuItem& item) {
j.at("name").get_to(item.name);
// 反序列化子菜单项
for (const auto& childJson : j.at("children")) {
MenuItem childItem;
from_json(childJson, childItem); // 调用当前重载的from_json函数
item.children.push_back(childItem);
}
}
} // namespace nlohmann
int main() {
// 示例JSON字符串
const std::string jsonString = R"({
"name": "Parent",
"children": [
{"name": "Child1"},
{"name": "Child2"}
]
})";
// 反序列化示例
json j = json::parse(jsonString);
MenuItem rootItem;
from_json(j, rootItem); // 此处会调用上面重载的from_json函数
return 0;
}
编译报错: no function template matches function template specialization from_json