Skip to content

Commit bcd49d4

Browse files
authored
Remove variant enumeration for JSON schema (#1452)
* Remove variant enumeration from JSON schema Now that we have "title" working properly, we don't need this additional enumeration for variants. It just adds cruft. * updated unit tests for JSON schema changes
1 parent 9302f9a commit bcd49d4

File tree

2 files changed

+3
-10
lines changed

2 files changed

+3
-10
lines changed

include/glaze/json/schema.hpp

-7
Original file line numberDiff line numberDiff line change
@@ -462,13 +462,6 @@ namespace glz
462462
(*s.type).emplace_back("null");
463463
}
464464
s.oneOf = std::vector<schematic>(N);
465-
if (not tag_v<T>.empty()) {
466-
if (not s.properties) {
467-
s.properties = std::map<std::string_view, schema, std::less<>>{}; // allocate
468-
}
469-
//(*s.properties)[tag_v<T>].type = "string";
470-
(*s.properties)[tag_v<T>].enumeration = ids_v<T>;
471-
}
472465

473466
const auto& ids = ids_v<T>;
474467

tests/json_test/json_test.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -3335,7 +3335,7 @@ suite tagged_variant_tests = [] {
33353335
auto s = glz::write_json_schema<tagged_variant>().value_or("error");
33363336
expect(
33373337
s ==
3338-
R"({"type":["object"],"properties":{"action":{"enum":["PUT","DELETE"]}},"$defs":{"int32_t":{"type":["integer"],"minimum":-2147483648,"maximum":2147483647},"std::map<std::string,int32_t>":{"type":["object"],"additionalProperties":{"$ref":"#/$defs/int32_t"}},"std::string":{"type":["string"]}},"oneOf":[{"type":["object"],"properties":{"action":{"const":"PUT"},"data":{"$ref":"#/$defs/std::map<std::string,int32_t>"}},"additionalProperties":false,"required":["action"],"title":"PUT"},{"type":["object"],"properties":{"action":{"const":"DELETE"},"data":{"$ref":"#/$defs/std::string"}},"additionalProperties":false,"required":["action"],"title":"DELETE"}]})")
3338+
R"({"type":["object"],"$defs":{"int32_t":{"type":["integer"],"minimum":-2147483648,"maximum":2147483647},"std::map<std::string,int32_t>":{"type":["object"],"additionalProperties":{"$ref":"#/$defs/int32_t"}},"std::string":{"type":["string"]}},"oneOf":[{"type":["object"],"properties":{"action":{"const":"PUT"},"data":{"$ref":"#/$defs/std::map<std::string,int32_t>"}},"additionalProperties":false,"required":["action"],"title":"PUT"},{"type":["object"],"properties":{"action":{"const":"DELETE"},"data":{"$ref":"#/$defs/std::string"}},"additionalProperties":false,"required":["action"],"title":"DELETE"}]})")
33393339
<< s;
33403340
};
33413341

@@ -3370,7 +3370,7 @@ suite tagged_variant_tests = [] {
33703370
const auto schema = glz::write_json_schema<std::shared_ptr<tagged_variant2>>().value_or("error");
33713371
expect(
33723372
schema ==
3373-
R"({"type":["object","null"],"properties":{"type":{"enum":["put_action","delete_action","std::monostate"]}},"$defs":{"int32_t":{"type":["integer"],"minimum":-2147483648,"maximum":2147483647},"std::map<std::string,int32_t>":{"type":["object"],"additionalProperties":{"$ref":"#/$defs/int32_t"}},"std::string":{"type":["string"]}},"oneOf":[{"type":["object"],"properties":{"data":{"$ref":"#/$defs/std::map<std::string,int32_t>"},"type":{"const":"put_action"}},"additionalProperties":false,"required":["type"],"title":"put_action"},{"type":["object"],"properties":{"data":{"$ref":"#/$defs/std::string"},"type":{"const":"delete_action"}},"additionalProperties":false,"required":["type"],"title":"delete_action"},{"type":["null"],"title":"std::monostate","const":null}]})")
3373+
R"({"type":["object","null"],"$defs":{"int32_t":{"type":["integer"],"minimum":-2147483648,"maximum":2147483647},"std::map<std::string,int32_t>":{"type":["object"],"additionalProperties":{"$ref":"#/$defs/int32_t"}},"std::string":{"type":["string"]}},"oneOf":[{"type":["object"],"properties":{"data":{"$ref":"#/$defs/std::map<std::string,int32_t>"},"type":{"const":"put_action"}},"additionalProperties":false,"required":["type"],"title":"put_action"},{"type":["object"],"properties":{"data":{"$ref":"#/$defs/std::string"},"type":{"const":"delete_action"}},"additionalProperties":false,"required":["type"],"title":"delete_action"},{"type":["null"],"title":"std::monostate","const":null}]})")
33743374
<< schema;
33753375
};
33763376
};
@@ -6878,7 +6878,7 @@ suite empty_variant_objects = [] {
68786878
const auto s = glz::write_json_schema<var_schema>().value_or("error");
68796879
expect(
68806880
s ==
6881-
R"({"type":["object"],"properties":{"$schema":{"$ref":"#/$defs/std::string"},"variant":{"$ref":"#/$defs/vari"}},"additionalProperties":false,"$defs":{"std::string":{"type":["string"]},"vari":{"type":["object"],"properties":{"type":{"enum":["varx","vary"]}},"oneOf":[{"type":["object"],"properties":{"type":{"const":"varx"}},"additionalProperties":false,"required":["type"],"title":"varx"},{"type":["object"],"properties":{"type":{"const":"vary"}},"additionalProperties":false,"required":["type"],"title":"vary"}]}}})")
6881+
R"({"type":["object"],"properties":{"$schema":{"$ref":"#/$defs/std::string"},"variant":{"$ref":"#/$defs/vari"}},"additionalProperties":false,"$defs":{"std::string":{"type":["string"]},"vari":{"type":["object"],"oneOf":[{"type":["object"],"properties":{"type":{"const":"varx"}},"additionalProperties":false,"required":["type"],"title":"varx"},{"type":["object"],"properties":{"type":{"const":"vary"}},"additionalProperties":false,"required":["type"],"title":"vary"}]}}})")
68826882
<< s;
68836883
};
68846884
};

0 commit comments

Comments
 (0)