Large-number example for https://srvscripts.com/tools/json-yaml-converter/

large-numbers.json    the input: 9007199254740993 (2^53 + 1), its negative, a 30-digit integer, the decimal 1.10, a list
large-numbers.yaml    what the converter writes for it (JSON to YAML), checked in Chromium on 18 October 2026.
                      Converting that YAML back to JSON (Swap) gives the original numbers again, digit for digit.

Why 9007199254740993: it is the smallest positive integer a 64-bit float (a JavaScript number) cannot store. A converter
that parses with JSON.parse silently writes 9007199254740992 instead; an order ID or database key then points at a
different record. This converter keeps the digits as written in both directions.

What the next program does with them (tested 18 October 2026, same input file)
  Node.js 22 JSON.parse            9007199254740992, -9007199254740992, 1.2345678901234568e+29, 1.1  (rounded)
  jq 1.7, passing values through   all digits kept, 1.10 kept
  jq 1.7, arithmetic (.order_id+0) 9007199254740992 (rounded: jq calculates with 64-bit floats)
  Python 3.13 json / PyYAML 6.0.3  integers exact (Python integers have no size limit); 1.10 becomes 1.1
  PHP 8.3 json_decode              9007199254740993 exact (fits a 64-bit integer); the 30-digit number becomes
                                   1.2345678901234568E+29 unless you pass JSON_BIGINT_AS_STRING
  yq 4.44.3 (mikefarah), JSON in   9007199254740992 and 1.2345678901234568e+29 (rounded): see yq-4.44.3-output.yaml
  yq 4.44.3, YAML in, JSON out     9007199254740993 kept (64-bit integer), the 30-digit number rounded

So keeping the digits in the converter only helps if every program after it keeps them too. If a value is an
identifier rather than a quantity, store it as a string ("9007199254740993") in both JSON and YAML.

Licence: free to copy and reuse.
