std::shared_ptr<PlanOperation> JsonTable::parse(const Json::Value& data) { auto result = std::make_shared<JsonTable>(); result->_names = functional::collect(data["names"], [](const Json::Value& v) { return v.asString(); }); result->_types = functional::collect(data["types"], [](const Json::Value& v) { return v.asString(); }); result->_groups = functional::collect(data["groups"], [](const Json::Value& v) { return v.asUInt(); }); if (data.isMember("data")) { result->_data = functional::collect(data["data"], [](const Json::Value& v) { return functional::collect(v, [](const Json::Value& c) { return c.asString(); }); }); } if (data.isMember("useStore")) { result->setUseStore(data["useStore"].asBool()); result->setMergeStore(data["mergeStore"].asBool()); } // Check if we have serial field definitions if (data.isMember("serials")) { result->_serialFields = functional::collect(data["serials"], [](const Json::Value& v) { return v.asString(); }); } return result; }
std::shared_ptr<_PlanOperation> JsonTable::parse(Json::Value &data) { auto result = std::make_shared<JsonTable>(); result->_names = collect(data["names"], [](const Json::Value& v) { return v.asString();}); result->_types = collect(data["types"], [](const Json::Value& v) { return v.asString();}); result->_groups = collect(data["groups"], [](const Json::Value& v) { return v.asUInt();}); if (data.isMember("data")) { result->_data = collect(data["data"], [](Json::Value& v){ return collect(v, [](Json::Value& c){ return c.asString(); }); }); } if (data.isMember("useStore")) { result->setUseStore(data["useStore"].asBool()); } return result; }