OrchardCMS/OrchardCore · error · JsonException

Cannot parse number

Error message

Cannot parse number

What it means

A JSON number token reached the Number case of DynamicJsonConverter.Read but every parser failed: TryGetInt64, TryGetDecimal, JConvert.TryGetBigInteger, and TryGetDouble all rejected the token. This is effectively unreachable for spec-compliant JSON numbers and signals a malformed or unsupported numeric literal in the payload.

Solutions

  1. Validate the payload with a JSON linter to find the malformed number
  2. Regenerate or fix the source producing the document so numbers conform to RFC 8259
  3. Deserialize into a typed target (int/decimal/double) instead of object to get a clearer System.Text.Json error
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at src/OrchardCore/OrchardCore.Abstractions/Json/Serialization/DynamicJsonConverter.cs:48 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of OrchardCMS/OrchardCore@4306c0717f (2026-09-13). Data as JSON: /api/errors/4f2ed5d6bed52122. Report an issue: GitHub.

Appendix: source

Thrown at src/OrchardCore/OrchardCore.Abstractions/Json/Serialization/DynamicJsonConverter.cs:48

                    return longObject;
                }

                if (reader.TryGetDecimal(out var decimalValue))
                {
                    return decimalValue;
                }

                if (JConvert.TryGetBigInteger(ref reader, out var bigInteger))
                {
                    return bigInteger;
                }

                if (reader.TryGetDouble(out var doubleObject))
                {
                    return doubleObject;
                }

                throw new JsonException("Cannot parse number");

            case JsonTokenType.StartArray:
                var list = new List<object?>();
                while (reader.Read())
                {
                    switch (reader.TokenType)
                    {
                        default:
                            list.Add(Read(ref reader, typeof(object), options));
                            break;
                        case JsonTokenType.EndArray:
                            return list;
                    }
                }

                throw new JsonException("Cannot parse array.");

            case JsonTokenType.StartObject:

View on GitHub (pinned to 4306c0717f)