diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/core/common/VariantReader.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/core/common/VariantReader.cpp b/src/core/common/VariantReader.cpp index 1f13cc1..7403b4a 100644 --- a/src/core/common/VariantReader.cpp +++ b/src/core/common/VariantReader.cpp @@ -737,6 +737,19 @@ std::pair<bool, Variant> VariantReader::parseGenericToken( reader.resetPeek(); } + // Try to parse a cardinality + if (c == '{') { + CharReaderFork readerFork = reader.fork(); + LoggerFork loggerFork = logger.fork(); + auto res = parseCardinality(readerFork, logger); + if (res.first) { + readerFork.commit(); + loggerFork.commit(); + return std::make_pair(true, Variant{res.second}); + } + reader.resetPeek(); + } + // Try to parse an object if (c == '[') { return parseComplex(reader, logger, 0, ComplexMode::BOTH); |