--set-json decoded JSON numbers into an any via encoding/json, so every
number became a float64 and integers above 2^53 lost precision:
9007199254740993 became 9007199254740992, and larger values rendered in
scientific notation. The plain --set path parses integers as int64
(typedVal), so the two flags disagreed on the same input.
Decode with UseNumber and convert each integral json.Number to int64
(fractional ones stay float64), recursing through objects and arrays.
Signed-off-by: Sueun Cho <sueun.dev@gmail.com>