1.**Integers**: if the limit is exceeded (`ULONG_MAX` for positive values, or `LONG_MIN` for negative values), the library understands that it is a big int, so it does not throw an overflow error; instead it stores it as a "string", and you can extract the result via `ToString()` with no loss.
2.**Reals**: this is split into the following layers:
2026-09-30 08:18:44 -05:00
> - a) If the number can be represented properly, it is stored as-is as a `double`.
> - b) The number already loses a little precision, but not much, it gets approximated.
> - c) The number is large (for example, exponent > 22 or < -22, etc.) and gets promoted to a string. In `ToDouble`, the `StringToDouble` function is used, which is precise, so nothing is lost — it's just a heads-up about what happens. You can also retrieve it as a string.
2026-10-01 08:25:33 -05:00
3.**Keys**: Las keys no deberan de tener \" (commila en medio de la key es un caso muy raro) de lo contrario probacara comportamiento
indefinido...
> Si no controla la entrada puede usar: JSONPARSERBYLEO_ENABLE_ESCAPED_COMMILAS_IN_KEYS para activar su uso
### Unescape
2026-10-08 21:07:14 -05:00
1.**Keys**: Las key se desescapan por lo que node["\n"] se accecede correcamnte, todos los escapes
validos para json incluido los emojis.. etc... Apaarte algo a mencionar
es que las funciones de la lib casi todas te daran un indice para trbajar con la key no el string ..
dado que no quiero forzar el unescape.. a todos sabiendo que ramrnte un key tiene escapes...
asi que eso....
2026-10-01 08:25:33 -05:00
2.**Algoritmo en si**: Dado que esto se resuelve on-demand en caso encontrar un escape invalido en el string
la lib no tira error alguno en Parse()... donde si tira un error en cuando se intenta hacer la conversion
en ToString(def), retornando def en caso de error, para surrogates invalidos por ahora a lib
usa el caracter de remplzao no tira error.. si es necesario y en las siguientes versiones se pdoria integrar