forked from loafle/openapi-generator-original
Supports: All OpenAPI 3.x data types: primitives, arrays, enums, nullable/optional fields, nested objects All parameter types: path, query, header, cookie, and combinations Schema composition: allOf (inheritance), oneOf (discriminated unions), anyOf (flexible unions) Security schemes: API key and bearer token authentication Discriminator-based polymorphic deserialization and error handling Provides: Error handling for invalid JSON, type mismatches, missing/unknown discriminator, and parameter validation Build system integration (CMake) for easy compilation and linking with required dependencies Clear build and run instructions for local development and testing Enables comprehensive, real-world validation of generated C++ server code against OpenAPI specifications
53 lines
1.1 KiB
C++
53 lines
1.1 KiB
C++
/**
|
|
* This file is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
* https://openapi-generator.tech
|
|
* Do not edit the class manually.
|
|
*/
|
|
|
|
#pragma once
|
|
// System headers
|
|
#include <nlohmann/json.hpp>
|
|
#include <variant>
|
|
|
|
|
|
|
|
namespace models {
|
|
|
|
// anyOf schema - type alias for std::variant
|
|
using StringOrNumber = std::variant<
|
|
std::string,
|
|
double >;
|
|
|
|
// JSON serialization functions (inline for header-only)
|
|
inline void from_json(const nlohmann::json& j, StringOrNumber& obj)
|
|
{
|
|
try
|
|
{
|
|
obj = j.get<std::string>();
|
|
return;
|
|
}
|
|
catch (const nlohmann::json::exception&)
|
|
{
|
|
// Type mismatch, try next variant alternative
|
|
}
|
|
try
|
|
{
|
|
obj = j.get<double>();
|
|
return;
|
|
}
|
|
catch (const nlohmann::json::exception&)
|
|
{
|
|
// Type mismatch, try next variant alternative
|
|
}
|
|
throw nlohmann::json::type_error::create(302, "Could not deserialize into any variant type of StringOrNumber", &j);
|
|
}
|
|
|
|
inline void to_json(nlohmann::json& j, const StringOrNumber& obj)
|
|
{
|
|
std::visit([&j](const auto& val) { j = nlohmann::json(val); }, obj);
|
|
}
|
|
|
|
|
|
} // namespace models
|
|
|