ConstantValue json_to_constant_value()

in serving/reagent/serving/core/Containers.cpp [6:43]


ConstantValue json_to_constant_value(const json& j) {
  if (j.count("string_value")) {
    return j.at("string_value").get<std::string>();
  }
  if (j.count("int_value")) {
    return j.at("int_value").get<int64_t>();
  }
  if (j.count("double_value")) {
    return j.at("double_value").get<double>();
  }
  if (j.count("list_string_value")) {
    return j.at("list_string_value").get<StringList>();
  }
  if (j.count("list_int_value")) {
    return j.at("list_int_value").get<std::vector<int64_t>>();
  }
  if (j.count("list_double_value")) {
    return j.at("list_double_value").get<std::vector<double>>();
  }
  if (j.count("map_string_value")) {
    return j.at("map_string_value").get<StringStringMap>();
  }
  if (j.count("map_int_value")) {
    return j.at("map_int_value").get<StringIntMap>();
  }
  if (j.count("map_double_value")) {
    return j.at("map_double_value").get<StringDoubleMap>();
  }
  if (j.count("ranked_action_list")) {
    return j.at("ranked_action_list").get<RankedActionList>();
  }
  if (j.count("map_map_double_value")) {
    return j.at("map_map_double_value")
        .get<std::unordered_map<std::string, StringDoubleMap>>();
  }
  std::string what = "Invalid constant: " + j.dump();
  throw std::runtime_error(what.c_str());
}