Files
openapi-generator/samples/server/petstore/cpp-httplib-server/feature-test/models/StringOrNumber.h
vasireddyrajesh b96334ffad Add standalone C++ server using cpp-httplib for OpenAPI-based APIs (#21724)
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
2026-02-12 19:41:05 +08:00

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